[英]What exactly is the difference between 'float' and 'double' floating point storage types?
我已经看到将术语“float”和“double”应用于不同场景的示例,并且似乎理解位和字节起着某种作用,但我找不到对区别的明确解释。 内存限制似乎是造成这种差异的原因 (??),但我真的只是想具体了解一个与另一个是什么。
此外,如何判断数据是否被分类(或应该存储)为“float”与“double”?
这些概念如何应用于十进制值(相对于二进制)?
上下文:我在 .csv 表中存储了一系列变量,我试图为其定义“存储类型”。 有些是整数,有些是字符串,还有一些是带小数的数字。 我只是想弄清楚如何为每个定义“存储类型”。
浮点数是表示计算机中使用的数字的一种方式,在其他地方进行了解释,例如此处和此处。 Double 只是比 float 使用更多的位,因此 double 具有更高的精度和范围。
在 CSV 文件中,数字以文本形式存储,例如使用五个字符“27.37”。 浮点数是计算机内部使用的一种表示数字的方式,因此您在 CSV 文件中的数字根本不是浮点数。 它们既不是浮动也不是双打。
当这些数字要由计算机处理时,文本格式(通常)会转换为内部格式,通常是 float 和 double 之一。 您无法通过查看数字的文本版本来决定哪个,因为它本身都不是。 您必须根据所需的精度和速度来决定。 在大多数情况下,我建议使用 double,因为 double 具有更高的精度,并且在典型的现代计算机上速度非常快。 通过使用浮动,您可以节省一些空间,有时还可以获得一些速度,但这仅在特殊情况下才需要。
但是,自相矛盾的是:在某些情况下,您可以查看写为文本的数字,并确定它是否可以存储为浮点数或双精度数。 例如,如果你找到这样写的数字“0.333333333333333314829616256247390992939472198486328125”,它本身不是浮点数或双精度数,但是这个特殊的数字,所有这些都是双精度数,但不能存储为浮点数。 如果存储为浮点数,位数较少,它将被转换为“0.3333333432674407958984375”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.