c# – 将数字截断到指定的小数位

c# – 将数字截断到指定的小数位,第1张

概述我需要将一个数字截断到2位小数,这基本上意味着 砍掉额外的数字. 例如: 2.919 -> 2.912.91111 -> 2.91 为什么?这是SQL服务器在存储多个a时所做的事情 特别精确.例如,如果列是十进制(8,2),并且您尝试 插入/更新9.1234的数字,3和4将被切断. 我需要在c#代码中做同样的事情. 我能想到的唯一可能的方法是: >使用string 我需要将一个数字截断到2位小数,这基本上意味着
砍掉额外的数字.

例如:

2.919     ->      2.912.91111   ->     2.91

为什么?这是sql服务器在存储多个a时所做的事情
特别精确.例如,如果列是十进制(8,2),并且您尝试
插入/更新9.1234的数字,3和4将被切断.

我需要在c#代码中做同样的事情.

我能想到的唯一可能的方法是:

>使用stringformatter仅“打印”出来
两位小数,然后将其转换为小数,
例如:

decimal tooManyDigits = 2.1345decimal ShorterDigits = Convert.ToDecimal(tooManyDigits.ToString("0.##"));// ShorterDigits is Now 2.13

我对此并不满意,因为它涉及一个to-string然后
另一个字符串到十进制转换似乎有点疯狂.
>使用Math.Truncate(只接受一个整数),所以我
可以将它乘以100,截断它,然后除以100.例如:

decimal toolongDecimal = 2.1235;toolongDecimal = Math.Truncate(toolongDecimal * 100) / 100;

我对此也不满意,因为如果toolongDecimal为0,
我会得到0分之差.

当然有一个更简单的方法!有什么建议?

解决方法 你自己回答了这个问题;你似乎只是误解了零除的意思.执行此 *** 作的正确方法是乘以,截断,然后分配,如下所示:
decimal Truncateto100ths(decimal d){    return Math.Truncate(d* 100) / 100;}Truncateto100ths(0m);       // 0Truncateto100ths(2.919m);   // 2.91Truncateto100ths(2.91111m); // 2.91Truncateto100ths(2.1345m);  // 2.13

这里没有除零,只有100除,这是绝对安全的.

总结

以上是内存溢出为你收集整理的c# – 将数字截断到指定小数位全部内容,希望文章能够帮你解决c# – 将数字截断到指定的小数位所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1263335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存