Yes, a real currency type would contain a Fixed. Most likely adding a symbol, 
code, etc. 

> On Nov 29, 2018, at 9:13 PM, Bakul Shah <ba...@bitblocks.com> wrote:
> 
> FWIW, in some code I am writing, I considered using 
> fixed point decimal numbers but ended up defining a
> *currency* type which is an int64 for value + a separate
> unit + currency kind. Even if I use a unit of millicent, this
> will allow handling amounts close to $100 Trillion. I
> don't expect this limit to be a problem for my personal
> finances! Performance is not an issue for my use. I
> even store all the financial data in text files!
> 
> Dealing with stuff such  as currency conversion, interest
> rates, stocks etc. gets a bit complicated due to their own
> precision needs but for that one can look at existing
> practices to do the right thing (which is, be able to accurately
> implement the rules your bank etc use).
> 
> [Aside:
> Ideally this would be done using a *generic* currency
> type. Something like
> 
> import "currency"
> type $ = currency.Type("$")
> type £ = currency.Type("£")
> 
> var m1 = $(5)
> var m2 = $(10)
> var m3 = £(2)
> 
> m1 + m2 // ok
> m2 + m3 // compile time error
> m1*m2 // compile time error
> m1*5  // ok
> m1+5  // compile time error
> 
> I doubt go2 will get generics flexible enough for this!
> ]
> 
>> On Nov 28, 2018, at 10:47 PM, robert engels <reng...@ix.netcom.com> wrote:
>> 
>> For those interesting in financial apps, I have released ‘fixed' at 
>> https://github.com/robaho/fixed a high performance fixed-point math library 
>> primarily designed for to work with currencies.
>> 
>> The benchmarks: (Decimal is the shopspring library, big Int/Float are the 
>> stdlib)
>> 
>> BenchmarkAddFixed-8          2000000000               0.83 ns/op            
>> 0 B/op          0 allocs/op
>> BenchmarkAddDecimal-8         3000000               457 ns/op             
>> 400 B/op         10 allocs/op
>> BenchmarkAddBigInt-8         100000000               19.2 ns/op             
>> 0 B/op          0 allocs/op
>> BenchmarkAddBigFloat-8       20000000               110 ns/op              
>> 48 B/op          1 allocs/op
>> BenchmarkMulFixed-8          100000000               12.4 ns/op             
>> 0 B/op          0 allocs/op
>> BenchmarkMulDecimal-8        20000000                94.2 ns/op            
>> 80 B/op          2 allocs/op
>> BenchmarkMulBigInt-8         100000000               22.0 ns/op             
>> 0 B/op          0 allocs/op
>> BenchmarkMulBigFloat-8       30000000                50.0 ns/op             
>> 0 B/op          0 allocs/op
>> BenchmarkDivFixed-8          100000000               19.3 ns/op             
>> 0 B/op          0 allocs/op
>> BenchmarkDivDecimal-8         1000000              1152 ns/op             
>> 928 B/op         22 allocs/op
>> BenchmarkDivBigInt-8         20000000                68.4 ns/op            
>> 48 B/op          1 allocs/op
>> BenchmarkDivBigFloat-8       10000000               151 ns/op              
>> 64 B/op          2 allocs/op
>> BenchmarkCmpFixed-8          2000000000               0.28 ns/op            
>> 0 B/op          0 allocs/op
>> BenchmarkCmpDecimal-8        100000000               10.8 ns/op             
>> 0 B/op          0 allocs/op
>> BenchmarkCmpBigInt-8         200000000                8.37 ns/op            
>> 0 B/op          0 allocs/op
>> BenchmarkCmpBigFloat-8       200000000                7.74 ns/op            
>> 0 B/op          0 allocs/op
>> BenchmarkStringFixed-8       20000000                99.0 ns/op            
>> 16 B/op          1 allocs/op
>> BenchmarkStringDecimal-8      5000000               326 ns/op             
>> 144 B/op          5 allocs/op
>> BenchmarkStringBigInt-8      10000000               209 ns/op              
>> 80 B/op          3 allocs/op
>> BenchmarkStringBigFloat-8     3000000               571 ns/op             
>> 272 B/op          8 allocs/op
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to