圆形.99表示十进制值

时间:2017-12-15 13:37:33

标签: c# decimal rounding

我想将价格(加倍)四舍五入到最接近的xx.99

例如:

10.3 ==> 10.99
10 ==> 10.99
10.97 ==> 10.99
10.50 ==> 10.99
10.99 ==> 10.99
10.01 ==> 10.99

我做了Math.RoundMath.TruncateMath.Ceiling,但并不是所有情况都有效。我可以转换为string,拆分和替换,但我认为这不是一个好方法。

我该怎么办?

3 个答案:

答案 0 :(得分:6)

将小数点减掉并加上0.99美分;)

double value = 10.45d;
double newprice = (int)value + 0.99;

答案 1 :(得分:1)

怎么样:

value = Math.Truncate(value) + 0.99M;

这会将它们转换为decimal

Math.Truncate与转换为(int)之间的区别在于前者将类型保留为double(或decimal),而后者将其转换为{ {1}}。

答案 2 :(得分:1)

以下

value = Math.Ceiling(value + 0.01m) - 0.01m;

它将正确处理value = 10 --> 10.99并且还会产生value = 9.991 --> 10.99(目前还不完全清楚这是否是您的意图)