你如何定义F#中的货币类型

Ser*_*jev 5 f# types

您能否建议一种在F#中定义货币类型的最佳方法?

Fra*_*ser 11

始终,始终使用System.Decimal存储财务数据!(除非你不关心不准确和舍入错误!)http://msdn.microsoft.com/en-us/library/364x0z75(VS.71 ) .aspx


Mas*_*sif 5

输入 钱 = int <dollars>?

甚至没有尝试过...您可以定义任意单位,还是仅适用于明确定义的单位?

显然你可能想要

输入 Money = int <thousandths_of_currency> (或数十便士,或其他)。

更准确地说。

编辑:

小数采用类型,因此您可以将货币定义为:

[<Measure>]

type = pounds

type money = decimal<pounds>
Run Code Online (Sandbox Code Playgroud)

这可以确保货币不会意外交叉转换,例如:

如果

balance = decimal<pounds>
Run Code Online (Sandbox Code Playgroud)

payment = decimal<dollars>

newbalance = balance + payment
Run Code Online (Sandbox Code Playgroud)

不会编译,你必须将付款转换为decimal<pounds>