c#:两个双数问题的总和

And*_*ich 7 c# double decimal

可能重复:
为什么C#中的浮点运算不精确?

你好.我有以下问题:

43.65+61.11=104.75999999999999
Run Code Online (Sandbox Code Playgroud)

对于十进制是正确的:

(decimal)43.65+(decimal)61.11=104.76
Run Code Online (Sandbox Code Playgroud)

为什么双重结果是错误的?

Stu*_*art 11

这个问题及其答案是关于此的丰富信息 - 在.NET中十进制,浮点数和双精度之间的差异?

报价:

  • 对于"自然精确小数"的值,最好使用小数.这通常适用于人类发明的任何概念:财务价值是最明显的例子,但也有其他概念.例如,考虑给予潜水员或滑冰者的分数.

  • 对于无论如何都无法真正精确测量的更多人工制品的值,浮动/双重更合适.例如,科学数据通常以这种形式表示.在这里,原始值不会以"十进制精度"开头,因此保持"十进制精度"对于预期结果并不重要.浮点二进制点类型比小数点快得多.