c# - 如何处理大多数小数不能用二进制准确表示的事实?

标签 c# floating-point double decimal

因此,我们知道像 0.1 这样的小数不能用二进制表示,这会导致精确问题(例如这里提到的:Formatting doubles for output in C#)。

我们知道我们有小数类型来表示数字的十进制...但问题是,很多数学方法不支持小数类型,所以我们将它们转换为 double ,这再次破坏了数字.

那我们该怎么办呢?

最佳答案

哦,对于大多数小数不能用二进制表示的事实,我们该怎么办?或者就此而言,二进制小数不能用十进制表示?

或者,甚至,所有基数的实数的无穷大(事实上,不可数无穷大)无法在任何计算机化系统中准确表示?

没什么!回想一句陈词滥调,你可以接近政府工作......事实上,你可以接近任何工作......计算机可以产生的准确度没有限制,它不可能是无限的,(这是能够表示每个可能的实数的数字表示方案所需要的)

您知道,对于您可以设计的每个数字表示方案,在任何计算机中,它只能表示 有限 数量的不同实数,准确度为 100.00%。在每对相邻的数字(可以 100% 准确度表示的数字)之间,总会有 无穷 不能以 100% 准确度表示的其他数字。

关于c# - 如何处理大多数小数不能用二进制准确表示的事实?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662538/

相关文章:

c# - UpdatePanel 中的 AddThis 控件 - 确保它们在异步回发后正确呈现

c++ - 编译器会优化除法成乘法吗

c++ - Float32 和 UInt32?

c# - 如何提高 double 类型对于大数的精度?

Java将负/正字符串数字转换为负/正 double

c# - 如何将 IQueryable 转换为 DataTable

c# - 无法创建 SSL/TLS 安全通道 - HttpWebRequest

c# - NUnit 不能很好地与 Assert.AreEqual 配合使用

GDB 能否正确解析 C 风格的十六进制 float ?

Java字符串格式问题。点后的两个元素