the*_*ist 0 floating-point double storage data-storage decimal
我已经看到术语“float”和“double”应用于不同场景的示例,并且似乎理解位和字节起到了某种作用,但我找不到关于差异的明确解释。内存限制似乎是造成这种差异的原因(??),但我真的只是想具体知道一个与另一个是什么。
此外,如何判断数据是否被分类(或应该存储)为“float”还是“double”?
这些概念如何应用于十进制值(相对于二进制)?
上下文:我在 .csv 表中存储了一系列变量,我试图为其定义“存储类型”。有些是整数,有些是字符串,还有一些是带小数的数字。我只是想弄清楚如何为每个定义“存储类型”。
浮点是计算机中使用的一种表示数字的方式,并在其他地方进行了解释,例如 此处 和 此处。Double 只是比 float 使用更多的位,因此 double 具有更高的精度和范围。
在 CSV 文件中,数字存储为文本,例如使用五个字符“27.37”。浮点数是计算机内部使用的一种表示数字的方式,因此 CSV 文件中的数字根本不是浮点数。它们既不是浮点数也不是双精度数。
当计算机要处理这些数字时,文本格式(通常)会转换为内部格式,通常是浮点型和双精度型之一。您无法通过查看数字的文本版本来决定哪个,因为它本身都不是。您必须根据所需的精度和速度做出决定。在大多数情况下,我建议使用双精度数,因为双精度数具有更高的精度,并且在典型的现代计算机上速度非常快。通过使用浮动,您可以节省一些空间,有时还可以提高一些速度,但这仅在特殊情况下才需要。
但是,矛盾的是:在某些情况下,您可以查看以文本形式编写的数字,并确定它是否可以存储为浮点型或双精度型。例如,如果您发现数字“0.333333333333333314829616256247390992939472198486328125”本身就不是浮点数或双精度数,但这个带有所有这些小数的特定数字可以存储为双精度数,但不能存储为浮点数。如果存储为浮点型,位数较少,它将转换为“0.3333333432674407958984375”。