问题标签 [strictfp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 什么时候应该在 java 中使用“strictfp”关键字?
我已经查过了它的作用,但实际上有没有人有一个例子说明你什么时候strictfp
在 Java 中使用关键字?有没有人真的发现了这个的用途?
将它放在我所有的浮点运算上会有任何副作用吗?
java - strictfp 非访问修饰符有什么用?
我知道这是一个重复的问题。但我想通过一个例子来了解它。那么任何人都可以用一个例子来解释它吗?
链接到重复的帖子:我什么时候应该在 java 中使用“strictfp”关键字?
scala - Scala 中没有 strictfp - 解决方法?
我在网上搜索了如何srictfp
在 Scala 中执行,但找不到任何提示。有人抱怨它,但找不到真正的解决方案。有一个关于它的bugtracker 条目已经有将近两年的历史了。在我寻找解决方法的过程中,似乎没有优雅的解决方法。
我目前的想法是我自己以某种方式在生成的字节码中设置适当的方法标志ACC_STRICT
,但我不知道这样做的最佳解决方案是什么。想到一个 Scala 编译器插件,或者只是在十六进制编辑器中修改标志。也许有人面临同样的挑战,可以告诉我他或她的解决方案吗?
java - Java中的strictfp
我在 java 中实现了一些神经网络库,并且有密集的double
(不是Double
)矩阵运算,矩阵很大,当然需要性能。
因此,我开始阅读有关strictfp
关键字的内容,老实说,我并不了解它的确切作用,并且我正在寻找有关是否应该使用它以及为什么要使用它的简单解释
java - 对 strictfp 和 StrictMath 的怀疑
我有一个小技术问题,打电话是一样的吗:
或者:
还是该strictfp
关键字仅适用于+ - * /
方法内部使用的基本算术运算?
java - 如何制作(静态)初始化程序块strictfp?
在重构一些代码时,我偶然发现了这种奇怪现象。在不影响整个类的情况下控制初始化器的 strictfp 属性似乎是不可能的。例子:
从JLS 的第 8.1.1.3 节中,我收集到如果将使用 strictfp 修饰符声明类,则初始化程序将是 strictfp。但它也说它使所有方法都隐式地严格执行:
strictfp 修饰符的作用是使类声明中的所有浮点或双精度表达式(包括变量初始化器、实例初始化器、静态初始化器和构造器中)显式地为 FP-strict(第 15.4 节)。
这意味着类中声明的所有方法,以及类中声明的所有嵌套类型,都是隐式的 strictfp。
那么,静态初始化器不接受修饰符,当应用于整个类时,一切都变成了strictfp?既然没有strictfp关键字的对立面,这不可能实现吧?
那么,我是否搞砸了使用静态方法来保持初始化块的主体以实现对严格控制的精确控制?
java - 为什么 abstract 和 strictfp 关键字不能在方法声明中一起使用的原因?
我正在阅读 katherine sierra 的 SCJP。
我知道抽象和最终关键字不能一起使用,因为它们相互矛盾,如书中所述。
但是,我不明白为什么 strictfp 和 abstract 关键字不能一起使用。
我还不知道 strictfp 关键字在 Java 中究竟是如何工作的。
在我看来,可以声明一个抽象的 strictfp 方法,拥有一个子类,并以“strictfp 方式”实现该方法。
这些关键字不能很好相处的原因是什么?
编辑
我已经仔细检查了这本书,它肯定说
因为接口方法是抽象的,它们不能被标记为 final、strictfp 或 native。
来自 Katherine Sierra 的 SCJP。第 21 页。
我的 IDE(Eclipse Juno)也说我不能同时使用 abstract 和 strictfp 关键字。
嗯,为什么不呢?
java - 声明一个 Java 类 strictfp 是否意味着它在其他类中调用的方法也是 strictfp?
就像标题一样...如果将 X 类声明为 strictfp 并调用 Y 类中的方法,是否会强制执行严格性,或者这只适用于 X 自己的代码?
此外,如果我在 strictfp 类方法中计算一个值并将其传递给非 strictfp 方法,如果没有进一步计算,该值是否仍然“安全”?
java - 使用javassist在运行时强制所有Java算术到strictfp?
给定一个考虑性能而编写的 Java 应用程序(即在源代码中故意未将方法声明为“strictfp”),是否可以允许用户以 strictfp 模式运行整个应用程序?
看起来一种粗略的方法是使用使用 javassist 编写的自定义类加载器将“strictfp”属性简单地添加到所有类的所有方法中。这将类似于:
http://www.verious.com/qa/no-strictfp-in-scala-workarounds/
但是,类加载器需要将 strictpf 属性添加到应用程序中的所有类方法,包括私有方法。(应用程序太大太复杂,无法明确列出所有可能需要 strictfp 属性的方法。)
javassist 中的反射 API 似乎不支持列出私有方法:
http://www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html#getMethods()
我想在 javassist 中做些什么(或者完全通过自定义类加载器方法)?
java - Scala strictfp 注解导致 ClassFormatError
我正在用 Scala 编写一个多人游戏,其中浮点计算必须在每台计算机上以完全相同的方式发生,所以我尝试将@strictfp
注释添加到每个类、对象和特征。但是,当我尝试运行代码时,会出现如下错误:java.lang.ClassFormatError: Method handleKeyPress in class com/nathanstoddard/common/renderer2d/InputHandler has illegal modifiers: 0xC01
. 如果我@strictfp
从该类中删除注释,它会为不同类中的不同方法提供类似的错误消息。
此错误消息是什么意思,我该如何解决?它是我的代码或 Scala 编译器中的错误吗?
我曾尝试@strictfp
在较小的应用程序中使用该标签,但到目前为止,除了我的大型项目外,我无法重现此崩溃。
另外,有没有办法全局启用 strictfp,所以我不必将它添加到每个类中?
我在 Windows 7 上使用 Scala 2.10.3 和 Java 1.7.0_10(64 位),并且我正在使用 sbt 0.12.2 运行我的程序。