在.NET中,十进制、浮点和双精度之间有什么区别?

什么时候有人会用这些?


当前回答

Double和float可以被整数零除,在编译和运行时都没有异常。小数不能除以整数零。如果你这样做,编译总是会失败。

其他回答

浮动:±1.5 x 10^-45至±3.4 x 10^38(~7个有效数字双倍:±5.0 x 10^-324至±1.7 x 10^308(15-16个有效数字)小数:±1.0 x 10^-28至±7.9 x 10^28(28-29个有效数字)

浮点7位精度

双精度约为15位

十进制大约有28位精度

如果您需要更好的精度,请使用double而不是float。在现代CPU中,两种数据类型的性能几乎相同。使用浮子的唯一好处是它们占用更少的空间。只有当你有很多人的时候,才有实际意义。

我觉得这很有趣。每个计算机科学家都应该知道浮点运算

浮动:

它是一个浮点二进制点类型变量。这意味着它以二进制形式表示数字。浮点是一种单精度32位(6-9位有效数字)数据类型。它主要用于图形库,因为对处理能力的要求非常高,也用于舍入误差不太重要的情况。

双倍:

它也是一个具有双精度和64位大小(15-17位有效数字)的浮点二进制点类型变量。Double可能是真实值最常用的数据类型,但金融应用程序和需要高精度的地方除外。

十进制的:

它是一个浮点型变量。这意味着它使用十进制数字(0-9)表示数字。它使用128位(28-29位有效数字)来存储和表示数据。因此,它比浮点和双精度更高。由于它们的高精度和易于避免舍入误差,它们主要用于金融应用。

例子:

using System;
  
public class GFG {
  
    static public void Main()
    {
  
        double d = 0.42e2;    //double data type
        Console.WriteLine(d); // output 42
  
        float f = 134.45E-2f;  //float data type
        Console.WriteLine(f); // output: 1.3445
  
        decimal m = 1.5E6m;   //decimal data type
        Console.WriteLine(m); // output: 1500000
    }
}

浮点、双精度和十进制之间的比较基于:

使用的位数:

浮点使用32位表示数据。Double使用64位表示数据。十进制使用128位表示数据。

数值范围:

浮动值范围约为±1.5e-45至±3.4e38。双倍值范围约为±5.0e-324至±1.7e308。十进制值的范围约为±1.0e-28至±7.9e28。

精度:

浮点以单精度表示数据。双精度表示数据。十进制比浮点和双精度更高。

准确度:

浮点运算不如双精度和小数精度高。双精度比浮点精度高,但比十进制精度低。十进制比浮点和双精度更精确。

简单地说:

Decimal、Double和Float变量类型在存储值的方式上有所不同。精度是主要区别(请注意,这不是唯一的区别),其中float是单精度(32位)浮点数据类型,double是双精度(64位)浮点类型,decimal是128位浮点数据类型。汇总表:

/==========================================================================================类型钻头达到近似范围/==========================================================================================浮动32位7位数-3.4×10^(38)到+3.4×10^双64 15-16位数字±5.0×10^(-324)至±1.7×10^十进制128 28-29有效数字±7.9 x 10^(28)或(1至10^(29)/==========================================================================================你可以在这里阅读更多,浮点,双精度和十进制。

float(System.Single的C#别名)和double(System.double的C#别名。float为32位;double是64位。换句话说,它们表示如下数字:

10001.10010110011

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

decimal(System.decimal的C#别名)是浮点小数点类型。换句话说,它们表示如下数字:

12345.65789

同样,小数点的数字和位置都编码在值中——这使得小数点仍然是浮点类型而不是定点类型。

需要注意的重要一点是,人类习惯于以十进制形式表示非整数,并期望以十进制表示得到精确的结果;并不是所有的十进制数字都可以用二进制浮点表示,例如0.1,所以如果使用二进制浮点值,实际上会得到0.1的近似值。当使用浮点小数点时,仍然会得到近似值——例如,1除以3的结果无法精确表示。

至于在以下情况下使用什么:

对于“自然精确小数”的值,最好使用小数。这通常适用于人类发明的任何概念:财务价值是最明显的例子,但也有其他例子。例如,考虑给潜水员或滑冰运动员的分数。对于那些本质上更为人为的、无论如何都无法精确测量的值,浮点/双精度更为合适。例如,科学数据通常以这种形式表示。在这里,原始值从一开始就不是“小数精度”的,因此对于预期结果来说,保持“小数精度精度”并不重要。浮点二进制点类型比小数更快。