【发布时间】:2012-03-14 06:48:16
【问题描述】:
在我的金融相关应用程序中,双重用作货币数据的数据类型。但最近我发现 Double 在舍入时有问题。
作为双变量内的示例
35.25 存储为 35.249999999999999999999
35.75 存储为 35.750000000000000000001
那么它什么时候会尝试将数字四舍五入到小数点后一位 35.25 = 35.3 35.75 = 35.8
这意味着一个数字到天花板另一个到地板。
有人可以提出解决此问题的方法吗?
Visual C++ 中的货币数据应该使用什么合适的数据类型
【问题讨论】:
-
简单:不要用
double来赚钱。使用整数作为最小分母。 (例如美分换美元) -
确定需要 Visual-C++ 特定的解决方案吗?不能在公司中重复使用,例如linux+g++是用的吗?换句话说,适用于所有符合标准的编译器的解决方案怎么样?
标签: c++ floating-point