首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么编译时浮点计算可能与运行时计算不具有相同的结果?

为什么编译时浮点计算可能与运行时计算不具有相同的结果?
EN

Stack Overflow用户
提问于 2018-06-21 09:10:23
回答 1查看 1.1K关注 0票数 6

constexpr: Introduction中,演讲者提到“编译时浮点计算可能与运行时计算的结果不同”:

原因与“交叉编译”有关。

老实说,我不太明白这个意思。IMHO,不同的平台也可能有不同的整数实现。

为什么它只影响浮点数?还是我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 20:51:19

您完全正确,在某种程度上,在编译时计算浮点值的问题与计算整数值的问题是相同的。区别在于任务的复杂性。在具有16位寄存器的系统上模拟24位整数数学是相当容易的;对于认真的程序员来说,这是一项简单的练习。如果你没有本机实现,那么做浮点数学就会困难得多。不需要浮点常量their的决定在一定程度上是基于这种差异:要求交叉编译器在编译时为其目标平台模拟浮点数学将非常昂贵。

另一个因素是可以在运行时设置浮点计算的一些细节。四舍五入是一种;上溢和下溢的处理是另一种。编译器根本不可能知道浮点计算的运行时计算的完整上下文,因此在编译时计算结果是不可靠的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50959021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档