.NET中decimal,float和double的区别?

是什么区别decimalfloatdouble在.NET?

什么时候会有人使用其中之一?


float并且double浮点二进制点类型。换句话说,他们代表了这样一个数字:

10001.10010110011

二进制数和二进制点的位置都在该值内编码。

decimal浮点小数点类型。换句话说,他们代表了这样一个数字:

12345.65789

同样,小数点的数量和位置都被编码在值中 – 这就是decimal浮点类型而不是固定点类型。

重要的是要注意的是,人类习惯用十进制形式表示非整数,并期望十进制表示中的确切结果; 并非所有的十进制数都可以在二进制浮点数中精确表示 – 例如0.1 – 所以如果使用二进制浮点数值,则实际上会得到0.1的近似值。例如,当使用浮动小数点时,您仍会得到近似值 – 例如,除以1除以3的结果不能被精确表示。

至于什么时候使用:

  • 对于“自然精确小数”的值,使用起来很好decimal。这通常适用于人类发明的任何概念:金融价值是最明显的例子,但也有其他概念。例如,考虑给予潜水员或溜冰者的分数。
  • 如果读入的性质的更加伪影不能真正测量值准确反正floatdouble更合适。例如,科学数据通常以这种形式表示。在这里,原始值不会以“小数精度”开始,所以对于预期结果来说,保持“小数精度”并不重要。浮点二进制点类型比小数点处理速度快得多。

添加评论

友情链接:蝴蝶教程