将一个类标记为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/