因此,我们知道像 0.1 这样的小数不能用二进制表示,这会导致精确问题(例如这里提到的:Formatting doubles for output in C#)。
我们知道我们有小数类型来表示数字的十进制...但问题是,很多数学方法不支持小数类型,所以我们将它们转换为 double ,这再次破坏了数字.
那我们该怎么办呢?
最佳答案
哦,对于大多数小数不能用二进制表示的事实,我们该怎么办?或者就此而言,二进制小数不能用十进制表示?
或者,甚至,所有基数的实数的无穷大(事实上,不可数无穷大)无法在任何计算机化系统中准确表示?
没什么!回想一句陈词滥调,你可以接近政府工作......事实上,你可以接近任何工作......计算机可以产生的准确度没有限制,它不可能是无限的,(这是能够表示每个可能的实数的数字表示方案所需要的)
您知道,对于您可以设计的每个数字表示方案,在任何计算机中,它只能表示 有限 数量的不同实数,准确度为 100.00%。在每对相邻的数字(可以 100% 准确度表示的数字)之间,总会有 无穷 不能以 100% 准确度表示的其他数字。
关于c# - 如何处理大多数小数不能用二进制准确表示的事实?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662538/