将一个类标记为strictfp意味着该类中的任何方法代码都将符合IEEE 754标准的浮点规则。

这是什么意思?我真的不明白。

最佳答案

某些处理器具有稍微更精确的算术功能-例如80位而不是64位。同样,在某些处理器上,即使在逻辑上使用double算术,使用float算术也可能更快。因此,例如:

float foo(float x, float y)
{
    x = x * 1.2345f;
    y = y * 2.3456f;
    return x * y;
}


在这里,中间操作可能会被优化为使用80位算术,直到返回时才回落到32位值...即使在理论上每个乘法的源代码中描述的操作都是32位乘法。

使用strictfp时,将关闭这些潜在的优化。几乎没有必要,但是这意味着您可以确保完全相同的一组算术运算-当给出完全相同的输入集时-不管实现如何,都将给出完全相同的结果集。

关于java - 通过使strictfp类或方法有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16352429/

10-10 07:52