.jpg)
我一直看到人们在 C# 中使用双精度。我知道我在某处读到过,双倍有时会失去精度。
我的问题是什么时候应该使用双精度,什么时候应该使用十进制类型?
哪种类型适合货币计算?(即超过100亿美元)

网友回答:
我的问题是什么时候应该使用
双精度,什么时候应该使用十进制
类型?
decimal当您使用 10^(+/-28) 范围内的值并且您对基于 10 基数表示的行为有期望时 – 基本上是金钱。
double当您需要相对精度(即在大值的尾随数字中失去精度不是问题)时,跨越截然不同的幅度 – 涵盖超过 10^(+/-300)。科学计算是最好的例子。double
哪种类型适合货币
计算?
十进制、十进制、十进制
不接受替代品。
最重要的因素是,作为二进制分数实现,根本无法准确表示许多分数(如 0.1),并且其总数较小,因为它是 64 位宽而不是 128 位。最后,金融应用程序通常必须遵循特定的四舍五入模式(有时是法律规定的)。 支持这些; 不。doubledecimaldecimaldecimaldouble

网友回答:
为了钱,总是十进制。这就是创建它的原因。
如果数字必须正确相加或平衡,请使用小数。这包括人们可能手动完成的任何财务存储或计算、分数或其他数字。
如果数字的确切值不重要,请使用双精度表示速度。这包括图形、物理或其他物理科学计算,其中已经有“有效数字数”。

网友回答:
根据浮点类型的特征:
| .NET 类型 | C# 关键字 | 精度 |
|---|---|---|
System.Single |
浮 | ~6-9 位数字 |
System.Double |
双 | ~15-17 位数字 |
System.Decimal |
十进制 | 28-29 位数字 |
我因使用错误的类型(几年前)而被刺痛的方式是大量:
你用完了 1 万的浮存金。
15 位数的货币价值:
9万亿与双倍。但是对于除法和比较,它更复杂(我绝对不是浮点数和无理数方面的专家 – 参见Marc的观点)。混合使用小数和双精度会导致问题:
如果使用十进制数,则使用浮点数的数学运算或比较运算
可能不会产生相同的结果,因为
浮点数可能不
完全接近
十进制
数
。
什么时候应该使用十进制而不是十进制?有一些类似且更深入的答案。
使用而不是货币应用程序是一种微观优化——这是我看待它的最简单的方式。doubledecimal
模板简介:该模板名称为【什么时候应该使用十进制而不是双精度?哪种类型适合货币计算?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。