所有单精度数字都可以用双精度格式表示吗?

R. *_*des 6 floating-point ieee-754

给定IEEE-754单精度格式(通常称为float某些语言/平台)中的任意数字,我可以确定数字也可以用双精度格式精确表示吗?

如果是这样,当考虑半精度到单精度和双精度到四倍精度时,该属性是否有效?

cHa*_*Hao 5

是的,double可以表示浮点数可以包含的任何数字.同样对于四精度等

浮点数以类似1.01b x 2^-1(0.625,在这种情况下)的形式表示.数字的重要组成部分是有效数,它基本上是一个二进制数,通常在第一个数字后面有一个小数点和指数.

二进制浮点格式之间唯一的主要区别是每个组件的位数.数字使用的位越多,每个部分可用的位数就越多.因此,对于有效数字,32位"float"可能具有1.01000000000000000000000,而(64位)"double"在该点之后将具有大约50位数.这意味着在float中可以精确表示的任何数字也可以在double中精确表示,因为您具有增加的精度(读取:更高有效数字)和增加的范围.它类似于64位整数变量如何保存任何32位整数; 额外的比特几乎没有用完.

当然,由于舍入错误而被切断的任何位都不会使它在转换为double时返回到数字 - 这意味着你在浮点数中有0.3,这是一个不精确的结果,如0.2999999875或其他(i不想计算),当你把它转换成双倍时,它不会更接近0.3 - 它仍将是0.2999999875.如果你想要更近似,你需要从头开始用双精度重做计算.