【发布时间】:2015-04-05 07:07:25
【问题描述】:
下面两个有什么区别?
float f1 = some_number;
float f2 = some_near_zero_number;
float result;
result = f1 / f2;
和:
float f1 = some_number;
float f2 = some_near_zero_number;
float result;
result = (double)f1 / (double)f2;
我对非常小的 f2 值特别感兴趣,在浮点数上操作时可能会产生 +infinity。是否有任何准确性需要获得?
使用这种演员的一些实用指南也会很好。
【问题讨论】:
-
如果您担心舍入错误,为什么要首先使用浮点数?
-
因为我在 RAM 中保留了巨大的结构(几 GB 或更多),并且使用双精度不是存储的选项;不过,在进行计算时,来回转换是一种选择;
-
值得注意的事实:x86 使用 80 bits 进行浮点除法,无论类型是 32 位还是 64 位。
标签: c floating-point floating-accuracy ieee-754