我查过它的功能,但有没有人真的有一个例子,说明在Java中何时会使用strictfp关键字?有人真的找到了这个用途吗?

把它放在我所有的浮点运算上会有什么副作用吗?

推荐答案

Strictfp确保您在每个平台上从浮点计算中得到完全相同的结果.如果不使用strictfp,JVM实现可以在可用的情况下自由使用额外的精度.

From the JLS:

在FP严格表达式中,所有 中间值必须是元素 浮点值集合的或双精度 值设置,这意味着结果 在所有FP严格表达式中,必须为 IEEE 754算法预测的结果 关于使用单个操作数表示的操作数 和双重格式.在一个 不是FP严格的表达式,有些 允许将回旋余地授予 实现以使用扩展的 要表示的指数范围 中间结果;净效果, 粗略地说,那是不是一个 计算可能会产生"正确的 回答"在排他的情况下 使用浮点值SET或DOUBLE 值设置可能会导致溢出或 下溢.

换句话说,就是要确保Write-Once-Run-Anywhere实际上意味着Write-Once-Get-Equally-Wrong-Results-Everywhere.

有了strictfp,你的结果是可移植的,没有它,结果更可能是准确的.

Java相关问答推荐

如何在Spring Boot中创建500错误的响应正文?

Java在模块化jar文件中找不到类,但是javap可以

OpenJDK、4K显示和文本质量

替换com. sun. jndi. dns. DnsContextFactory Wildfly23 JDK 17

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

对Java中的通配符参数的混淆

在AVL树的Remove方法中使用NoSuchElementException时遇到问题

在Java 17中使用两个十进制数字分析时间时出错,但在Java 8中成功

Jenv-相同的Java版本,但带有前缀

为什么同步数据块无效?

Java中不兼容的泛型类型

垃圾回收器是否真的删除超出作用域的对象?

如何获得凌空cookies ,并设置它在下一个请求- android

无法将GSON导入到我的JavaFX Maven项目

对从Spring Boot 3.1.5升级到3.2.0的方法的查询验证失败

如何通过Java java.lang.Foreign API访问本机字节数组

在Oracle中调用输出参数在索引处缺少IN或OUT参数的函数

获取所有可以处理Invent.ACTION_MEDIA_BUTTON Android 13 API33的Android包

如何使用Java对随机生成的字母数字优惠券代码进行过期设置

Cucumber java-maven-示例表-未定义一步