c# – 将数字截断到指定的小数位
发布时间:2020-12-15 04:26:46 所属栏目:百科 来源:网络整理
导读:我需要将一个数字截断到2位小数,这基本上意味着 砍掉额外的数字. 例如: 2.919 - 2.912.91111 - 2.91 为什么?这是SQL服务器在存储多个a时所做的事情 特别精确.例如,如果列是十进制(8,2),并且您尝试 插入/更新9.1234的数字,3和4将被切断. 我需要在c#代码中做
我需要将一个数字截断到2位小数,这基本上意味着
砍掉额外的数字. 例如: 2.919 -> 2.91 2.91111 -> 2.91 为什么?这是SQL服务器在存储多个a时所做的事情 我需要在c#代码中做同样的事情. 我能想到的唯一可能的方法是: >使用stringformatter仅“打印”出来 decimal tooManyDigits = 2.1345 decimal ShorterDigits = Convert.ToDecimal(tooManyDigits.ToString("0.##")); // ShorterDigits is now 2.13 我对此并不满意,因为它涉及一个to-string然后 decimal tooLongDecimal = 2.1235; tooLongDecimal = Math.Truncate(tooLongDecimal * 100) / 100; 我对此也不满意,因为如果tooLongDecimal为0, 当然有一个更简单的方法!有什么建议? 解决方法
你自己回答了这个问题;你似乎只是误解了零除的意思.执行此操作的正确方法是乘以,截断,然后分配,如下所示:
decimal TruncateTo100ths(decimal d) { return Math.Truncate(d* 100) / 100; } TruncateTo100ths(0m); // 0 TruncateTo100ths(2.919m); // 2.91 TruncateTo100ths(2.91111m); // 2.91 TruncateTo100ths(2.1345m); // 2.13 这里没有除零,只有100除,这是绝对安全的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |