4 ms·
Storing money as an integer is OK but I've never liked APIs that required financial amounts to be integers. Amounts always eventually need to be displayed to a
by pbreit 4mo ago
Storing money as an integer is OK but I've never liked APIs that required financial amounts to be integers. Amounts always eventually need to be displayed to a human as a decimal.
- stronglikedan 4mo agodisplaying as a decimal is nondestructive, whereas doing math with a decimal is asking for trouble
- vitalikpie 4mo agoYeah this is exactly what I do under the hood. All the data is stored as Ints, charts use double for speed, views use decimal to display stuff properly in the user locale. P.S. Doubles are absolute evil for calculations: @Test func test() { var a = Decimal(100.4449315513924) * 100 // It's me being dumb, not noticing that let b = NSDecimalNumber(decimal: a).intValue #expect(b == 10044) // Expectation failed: (b → -8402) == 1044 }
- hakfoo 4mo agoBecause decimal types are still vanishingly scarce as a built-in in modern languages. Storage as an integer often adds complexity because of currency reforms. Decimals can and have been dropped in the past.