首页 / C# / c# – 乘法时的十进制精度
c# – 乘法时的十进制精度
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 乘法时的十进制精度,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1350字,纯文字阅读大概需要2分钟。
内容图文
![c# – 乘法时的十进制精度](/upload/InfoBanner/zyjiaocheng/816/4cfc3396b18f463c9d648c183d525a18.jpg)
给出2个这样的值:
decimal a = 0.15m;
decimal b = 0.85m;
在b总是1.0m的情况下,两个值仅指定为2个小数位,并且两个值都是> = 0.0m且<= 1.0m 是否保证x == total将始终为真,对于x,a和b的所有可能的十进制值?使用下面的计算:
decimal x = 105.99m;
decimal total = (x * a) + (x * b);
或者有些情况下x ==总共只有2位小数,但不是超过这个数字?
如果a和b可以被指定为无限小数位(与Decimal允许一样多),它会有什么不同吗,但只要b = 1.0m仍然有效吗?
解决方法:
十进制存储为表示小数位数的数字10的符号,整数和整数指数.只要你的数字的整数部分(例如105中的105)不够大,那么b总是等于1.并且你的等式(x * a)(x * b)的结果总是具有四个小数位的正确值.
与float和double不同,精度不会丢失到数据类型的大小(128位)
来自MSDN:
The Decimal value type represents decimal numbers ranging from
positive 79,228,162,514,264,337,593,543,950,335 to negative
79,228,162,514,264,337,593,543,950,335. The Decimal value type is
appropriate for financial calculations requiring large numbers of
significant integral and fractional digits and no round-off errors.
The Decimal type does not eliminate the need for rounding. Rather, it
minimizes errors due to rounding. For example, the following code
produces a result of 0.9999999999999999999999999999 rather than 1
decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 0.9999999999999999999999999999 to the console
Console.WriteLine(dividend/divisor * divisor);
内容总结
以上是互联网集市为您收集整理的c# – 乘法时的十进制精度全部内容,希望文章能够帮你解决c# – 乘法时的十进制精度所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。