在c#中,哪种数据类型最适合赚钱?
当前回答
小数。如果你选择了double,你就很容易出现舍入错误
其他回答
系统。小数
Decimal值类型表示十进制数字,范围从正79,228,162,514,264,337,593,543,950,335到负79,228,162,514,264,337,593,543,950,335。Decimal值类型适用于需要大量有效整数和小数位数且没有舍入错误的财务计算。Decimal类型并不能消除舍入的需要。相反,它最小化了舍入造成的错误。
我想指出zneak关于为什么不应该使用double的出色回答。
同意货币模式:当你使用小数时,处理货币太麻烦了。
如果您创建了currency类,那么您就可以将所有与货币相关的逻辑放在那里,包括正确的ToString()方法、对解析值的更多控制以及对除法的更好控制。
此外,使用Currency类,就不会意外地将货币数据与其他数据混淆。
十进制的范围更小,但精度更高——所以你不会随着时间的推移失去所有的便士!
详情如下:
http://msdn.microsoft.com/en-us/library/364x0z75.aspx
另一种选择(特别是如果您滚动自己的类)是使用int或int64,并指定后面的四位数字(甚至可能是2)为“小数点的右侧”。所以“在边缘”,你需要一些“* 10000”在入口,一些“/ 10000”在出口。这是微软SQL Server使用的存储机制,请参见http://msdn.microsoft.com/en-au/library/ms179882.aspx
这样做的好处是,所有的求和都可以用(快速的)整数算术来完成。
使用来自企业应用程序体系结构模式的Money模式。指定金额为十进制,货币为枚举。
推荐文章
- 静态隐式运算符
- 不区分大小写列表搜索
- 'throw'和'throw new Exception()'的区别
- 不能在lambda表达式中使用ref或out参数
- c# int到字节[]
- 将WPF组合框绑定到自定义列表
- foreach vs somlist . foreach (){}
- 为什么try{…}最后{…}好;尝试{…} catch{}坏?
- c# 8用多种情况切换表达式,结果相同
- 在没有事件源注册的情况下写入Windows应用程序事件日志
- 并发HashSet<T>在。net框架?
- 从控制器内获得控制器和动作名称?
- c++ auto关键字。为什么它是魔法?
- 新建T()
- 如何将枚举绑定到WPF中的组合框控件?