我想将价格(加倍)四舍五入到最接近的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.Round
,Math.Truncate
,Math.Ceiling
,但并不是所有情况都有效。我可以转换为string
,拆分和替换,但我认为这不是一个好方法。
我该怎么办?
答案 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
(目前还不完全清楚这是否是您的意图)