c++浮点计算在android和iOS中是否一致?

Is c++ floating point calculation consistent in android and iOS?

本文关键字:是否 iOS 计算 android c++      更新时间:2023-10-16

例如,如果我有一个c++函数有这么多浮点运算(例如:除法,sqrt,sin,cos…),但没有rand(),我能确保它在android和iOS中得到相同的结果吗?

例如,函数findValue(123.456)在android中返回3.52111,但在iOS中返回3.52205 ?

它们根本不需要保持一致,因为c++并没有强制使用特定的浮点类型。

(尽管通常情况下,浮点双精度类型将是IEEE754类型:Java坚持的类型)

如果包含

static_assert(std::numeric_limits<double>::is_iec559, "Not IEEE754");

在源代码中

,如果浮点数不是您期望的浮点数,则编译将失败。在没有断言的情况下,您可以确信算术运算将非常相似。

No。即使你有一个完全兼容的IEEE754 double,也只能保证+-/*和sqrt是正确的,直到最后一位。sincos通常有错误,尽管这些错误对于sin(123.456)来说仍然相当小。但如果sin(123456.789)是正确的,那将是一个惊喜。