我的数字范围为1e10和1e11。为了准确起见,在进行任何计算和/或比较之前,将这些数字标准化为[0; 1]会更好吗?我想知道,因为我听说在0和1之间有数量可表示的数字,而不是从1到无穷大。但是,我找不到相关的来源。
答案 0 :(得分:3)
您无法提高现有浮点数的精度。没有“隐藏”精度可以通过归一化来恢复,相反,归一化更可能由于舍入误差而降低数字的精度。也就是说,如果输入首先以某种方式标准化,那么有些数学运算可能会产生更精确的结果,但这尤其取决于您正在执行的操作。
答案 1 :(得分:0)
浮点数以浮点数存储在内存中,即科学计数法。那是1.23456789e10
,1.23456789e-10
和1.23456789
都会保留相同数量的有效数字。
确实,在数学上,0和1之间存在无穷大的数字(也就是Aleph-1?),但这与讨论无关,因为浮点变量只能容纳这么多不同的值。例如,一个4字节的浮点变量有32位,因此不可能产生超过2 ^ 32个不同的浮点值。