【发布时间】:2012-05-16 04:50:46
【问题描述】:
我需要比较两个值。
一个值是price,它代表某物的当前价格,因此decimal,因为您实际上可以按此价格买卖某物。
另一个值是estimatedPrice,它是数学计算的结果,所以double,因为它只是estimation,你实际上不能通过这个esitmatedPrice做任何“操作”
现在我想购买price < estimatedPrice。
那么我应该将价格转换为双倍还是将估计价格转换为小数?
我知道在施法后我会得到“稍微其他”的数字,但我似乎没有其他选择。
【问题讨论】:
-
@BlueChippy 如果商品价格昂贵,您不能将浮动用于价格数据。例如,float 不能代表
123456.78。 -
十进制占用更多内存并且具有更小范围的更重要的数字,因此与浮点数(float/double)相比可以“更精确”(取决于您对“精确”的看法)。如果你愿意,你可以很高兴地对两个值使用双精度,或者小数,或者浮点数,特别是如果价格总是要保留两位小数。您不能将任何浮点数显式转换为十进制数(因为它们是完全不同的东西),因此在这种情况下最好为所有类型选择一个。将留给其他人推荐哪一个! (我个人会使用小数)
-
@phoog 是的,取决于场景。我的个人偏好是十进制(首选)或双精度...但如果可能,请全面使用该类型。
-
@BlueChippy 同意了。实际上,我对浮点数发表了评论,因为我什至见过货币价值超过 double 范围的情况。但是,自从意大利使用欧元和土耳其将其货币重新估价 10^6 倍后,我还没有看到过这种情况。
标签: c#