为什么double和float存在?

时间:2009-05-14 16:50:50

标签: c# sql double decimal math

复制

  

When should I use double instead of decimal?

     
    

..还有更多...

  

我们在整个应用程序中使用C#和SQL Server十进制数据类型,因为它们的准确性。从来没有任何这些令人烦恼的问题,其中总计不会增加细节等等。

我想知道为什么双重和漂浮存在于它们的不准确

4 个答案:

答案 0 :(得分:3)

出现了浮点运算,因为它是以大量合理硬件成本对大量非整数运算的唯一方法。无限精度算术以多种语言(Python,LISP等)和库(Java的BigNum,GMP等)实现,并且是需要更高精度的人(例如金融行业)的替代方案。对于我们其他大多数处理中等数字的人来说,floats或肯定doubles都非常准确。两种不同的浮点数据类型(分别对应于IEEE 754单精度和双精度),因为单精度浮点单元比双精度单元具有更好的面积,功率和速度属性,因此硬件设计师和程序员应该进行适当的权衡以利用这些不同的属性。

答案 1 :(得分:1)

它们 比十进制更快,而且通常你不需要精确的精确度。

答案 2 :(得分:1)

“decimal”是128位,double是64位,float是32位。回到白天,过去很重要。

十进制主要用于货币交易(以避免四舍五入),其他数据足以满足一些精确度为29的十进制小数字没有任何现实世界意义的东西。

答案 3 :(得分:0)

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

这篇文章非常清楚:

Decimal vs Double Speed