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

时间:2016-10-04 18:56:32

标签: floating-point double decimal storage data-storage

我已经看到了将“float”“double”这些术语应用于不同场景的示例,并且似乎理解位和字节可以起到一定作用,但是我找不到 清除解释差异的原因。 内存限制似乎是这种差异的原因(??),但我真的只想知道具体是什么与另一个

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

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

上下文:我有一系列存储在.csv表中的变量,我正在尝试定义“存储类型”。有些是整数,有些是字符串,还有一些是带小数的数字。我只想弄清楚如何为每个人定义“存储类型”。

1 个答案:

答案 0 :(得分:2)

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

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

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

但是,要反驳自己:在某些情况下,可以查看作为文本编写的数字,并确定它是否可以存储为float或double。例如,如果您发现这样写的数字“0.333333333333333314829616256247390992939472198486328125”,它本身不是浮点数或双精度数,但是这个具有所有小数的特定数字可以存储为double但不能存储为float。如果存储为浮点数,其位数较少,则会转换为“0.3333333432674407958984375”。