当处理 double 数据类型时,乘以逆是好是坏?
double
哪种方法 更快 ?哪种方式使用较少的内存?首选哪种方式?
MSIL如何处理呢?
SquareInches = MMSquared / 645.16 SquareInches = MMSquared * 0.0015500031000062000124000248000496
注意:1 万名用户将注意到,这是该问题的重复项,已删除,因为最初的提问者决定在问题的“评论”部分对所有人进行谴责。
该问题被重新发布,因为它是一个“好”问题。
请“取消选中”社区Wiki,以获取您的答案,因为我仅将其发布为CW,因此不会将其视为“声誉”争夺者。
乘以倒数更快。编译器不会自动对此进行优化,因为这可能会导致精度损失很小。(这实际上是D新闻组WalterBright的常客出现的,他明确表示编译器不会自动执行此操作。)您通常应该划分内容,因为它更具可读性和准确性。
如果您在一个循环中执行十亿次浮点代码, 而 又不关心精度的微小损失, 而 将相同的数除以数次,那么乘以逆数可能是一个很好的优化。实际上,在某些情况下,例如在乘以逆运算所描述的情况下,我已经获得了实际的显着加速,但是这些极端情况在循环中执行了数十亿次,除了乘上浮点数外几乎什么也没做。