使用浮点数时,是否可以在0和1之间进行标准化?

时间:2015-11-04 15:25:23

标签: c++ floating-point double

我的数字范围为1e10和1e11。为了准确起见,在进行任何计算和/或比较之前,将这些数字标准化为[0; 1]会更好吗?我想知道,因为我听说在0和1之间有数量可表示的数字,而不是从1到无穷大。但是,我找不到相关的来源。

2 个答案:

答案 0 :(得分:3)

您无法提高现有浮点数的精度。没有“隐藏”精度可以通过归一化来恢复,相反,归一化更可能由于舍入误差而降低数字的精度。也就是说,如果输入首先以某种方式标准化,那么有些数学运算可能会产生更精确的结果,但这尤其取决于您正在执行的操作。

答案 1 :(得分:0)

浮点数以浮点数存储在内存中,即科学计数法。那是1.23456789e101.23456789e-101.23456789都会保留相同数量的有效数字。

确实,在数学上,0和1之间存在无穷大的数字(也就是Aleph-1?),但这与讨论无关,因为浮点变量只能容纳这么多不同的值。例如,一个4字节的浮点变量有32位,因此不可能产生超过2 ^ 32个不同的浮点值。