我需要将数字截断为2个小数位,这基本上意味着 会截断多余的数字。将数字截断为指定的小数位
如:
2.919 -> 2.91
2.91111 -> 2.91
为什么?这是SQL服务器在存储一定数量的特定精度时正在执行的操作。例如,如果列是十进制(8,2),并且您尝试 插入/更新9.1234的数字,则3和4将被截断。
我需要在c#代码中完成同样的事情。
,我能想到这样做的唯一可行方法之一:
使用stringformatter“打印”出来只有 小数点后两位,然后将其转换为十进制, 如:
decimal tooManyDigits = 2.1345 decimal ShorterDigits = Convert.ToDecimal(tooManyDigits.ToString("0.##")); // ShorterDigits is now 2.13
我不是很满意这一点,因为它涉及到字符串,然后 另一个字符串转换成十进制这似乎有点疯狂。
使用Math.Truncate(只接受的整数),所以我 可以乘以100它,截断,然后乘以100除以例如:
decimal tooLongDecimal = 2.1235; tooLongDecimal = Math.Truncate(tooLongDecimal * 100)/100;
我也不满意这是因为如果tooLongDecimal是0, 我会得到除以0的错误。
当然有更好的+更简单的方法!有什么建议么?
'0/100'不通过0错误分频。它是'0',这是你所期望的。 – xbonez
(0 * 100)/ 100 = 0 –
@sehe truncate!= round –