我不知道为什么Ceiling的行为如下图所示
为什么是processingFee!= Settings.PaymentProcessingFeeInPercentage*prizesSum?
替代文字http://img514.imageshack.us/img514/3950/csharpceilingproblem.png
Jon*_*eet 25
您的百分比实际上不是0.05.它的值接近 0.05 ......可能略高于0.05.因此,当它乘以2600时,你得到一个超过130.0的值...然后被"天花板"到131.0.
使用我刚才写的一个小工具(可以从这个页面获得关于.NET二进制浮点类型的信息)看起来float最接近0.05 的实际值是0.0500000007450580596923828125.对于双打,它是0.05000000000000000277555756156289135105907917022705078125.
故事的道德:不要float用于这种事情 - 使用decimal.或者,如果您只是想表示一个百分比,如果实际上只能精确到百分之一,那么使用0-100的整数值.
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |