gpt4 book ai didi

Java parsefloat 在每个 CPU 上都有相同的结果

转载 作者:行者123 更新时间:2023-11-30 06:40:15 24 4
gpt4 key购买 nike

我刚读到有关 strictfp ( https://en.wikipedia.org/wiki/Strictfp ) 的内容以及自 Java 1.2 以来浮点/双点运算可能在不同 CPU 上产生不同结果的事实。

现在我想知道 Float.valueOf 方法是否也是如此?我找不到任何来源。 valueOf 的 javadoc 明确指出:

Note that the round-to-nearest rule also implies overflow and underflow behaviour;

这对我来说表明如果关闭 strictfp 可能会有所不同。

是否有关于此主题的准确消息来源并说明情况是否如此?

最佳答案

Which to me indicates that it may be different if strictfp is turned off.

JLS 说 strictfp 修饰符的意思是类或方法中的任何表达式都被评估为 FP-strict。

但是,JLS 并没有说如果您在 FP-strict 表达式中调用不同的方法,那么该方法中的计算也将自动成为 FP-strict。

这意味着您从调用 Float.valueOf 获得的结果不依赖于 strictfp/调用者的 FP 严格性。

另一方面是在 Float.valueOf(String) 中执行转换的(内部)Java 类:

  • 注意为 INF 和 NaN 值使用特定值,
  • 注意确保该值在 javadoc 中规定的错误范围内,并且
  • Float 情况下,它以 double 算法进行转换。

但是,转换方法不是 strictfp 方法,所以如果代码对 FP-strictness 敏感,就会出现问题。

要查找的类是 Java 11 中的 jdk.internal.math.FloatingDecimal

关于Java parsefloat 在每个 CPU 上都有相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58624665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com