'float' 和 'double' 浮点存储类型之间到底有什么区别?

What exactly is the difference between 'float' and 'double' floating point storage types?

我看过术语 "float""double" 应用于不同场景的示例,并且似乎明白位和字节起着一定的作用,但我找不到 清楚 对区别的解释。 内存限制似乎是造成这种差异的原因 (??),但我真的只想知道 具体来说,一个与另一个 是什么。

此外,如何判断数据是否分类(或应该存储)为"float"还是"double"?

这些概念如何应用于十进制值(相对于二进制)?


Context:我在 .csv table 中存储了一系列变量,我试图为其定义 "storage type." 有些是整数,其他是字符串,还有一些是带小数的数字。我只是想弄清楚如何为每个定义 "storage type"。

浮点数是一种在计算机中使用的表示数字的方式,并在其他地方进行了解释,例如 herehere。 Double 只是比 float 使用更多的位,所以 double 具有更高的精度和范围。

在 CSV 文件中,数字以文本形式存储,例如使用五个字符“27.37”。浮点数是计算机内部使用的一种表示数字的方式,因此 CSV 文件中的数字根本不是浮点数。它们既不是花车也不是双打。

当计算机处理这些数字时,文本格式(通常)会转换为内部格式,通常是 float 和 double 之一。您无法通过查看数字的文本版本来决定是哪一个,因为它本身都不是。您必须根据所需的精度和速度来决定。在大多数情况下,我建议使用双精度,因为双精度具有更高的精度,并且在典型的现代计算机上速度非常快。通过使用浮点数,您可以节省一些 space,有时还可以获得一些速度,但这仅在特殊情况下才需要。

但是,自相矛盾:在某些情况下,您 可以 查看以文本形式编写的数字,并确定它是否可以存储为 float 或 double。例如,如果您发现数字“0.333333333333333314829616256247390992939472198486328125”就是这样写的,它本身不是浮点数或双精度数,但这个带有所有这些小数的特定数字可以存储为双精度数而不是浮点数。如果存储为浮点数,其位数较少,它将转换为“0.3333333432674407958984375”。