复制
.. 还有很多...
由于它们的准确性,我们在整个应用程序中使用 C# 和 SQL Server 十进制数据类型。从来没有遇到过任何令人讨厌的问题,即总数不等于细节等。
我想知道为什么 double 和 float 存在,因为它们不准确
浮点运算的出现是因为它是在硬件成本合理的情况下对大量非整数进行运算的唯一方法。无限精度算术在多种语言(Python、LISP 等)和库(Java 的 BigNum、GMP 等)中实现,是需要更高准确性的人们(例如金融业)的替代方案。对于我们其他大多数人来说,他们处理中等规模的数字,floats
或者当然doubles
足够准确。两种不同的浮点数据类型(分别对应于 IEEE 754 单精度和双精度),因为单精度浮点单元比双精度单元具有更好的面积、功率和速度属性,因此硬件设计师和程序员应该做出适当的权衡来利用这些不同的属性。
它们比十进制快得多,而且您通常不需要精确的精度。
“十进制”是 128 位,双精度是 64 位,浮点数是 32 位。在过去,这很重要。
Decimal 主要用于货币交易(以避免四舍五入),其他对于 29 位小数的准确性没有任何现实意义的事情来说已经足够了。