我需要将一个数字截断到小数点后 2 位,这基本上意味着去掉多余的数字。
例如:
2.919 -> 2.91
2.91111 -> 2.91
为什么?这就是 SQL 服务器在存储多个特定精度时所做的事情。例如,如果一列是 Decimal(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 的错误。
当然有更好+更简单的方法!有什么建议么?