关于C#:为什么存在double和float?

Why do double and float exist?

本问题已经有最佳答案,请猛点这里访问。

复制品

When should I use double instead of decimal?

.. and many more...

< /块引用>

我们在应用程序中使用C和SQL Server十进制数据类型是因为它们的准确性。从来没有遇到过这样令人恼火的问题,总的来说,这些问题并不能算是细节问题,等等。

我想知道为什么双浮和浮的存在,因为它们的不精确性


浮点运算之所以出现,是因为它是在大范围非整数上操作的唯一方法,而且硬件成本合理。无限精确算法在几种语言(Python、Lisp等)和库(Java的BigNIM、GMP等)中实现,并且是需要更精确的人(例如金融业)的一种选择。对于大多数处理中等大小数字的其他人来说,floats或当然是doubles的准确性远远不够。两种不同的浮点数据类型(分别对应于IEEE754单精度和双精度),因为单精度浮点单元比双精度单元具有更好的面积、功率和速度特性,因此硬件设计者和程序员应作出适当的权衡,以利用这些不同的特性。里斯。


"decimal"是128位,double是64位,float是32位。回到过去,这很重要。

小数主要用于货币交易(避免四舍五入),其他的小数足以用于某些事情,其中29位小数的准确性没有任何实际意义。


它们比十进制快得多,而且常常不需要精确的精度。


decimal数据类型的缺点是性能。

这篇文章涵盖的很好:

十进制与双速