繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM