参考:
Java核心技术
https://www.iteye.com/blog/neil-yang-341476

文章目录

  • 背景
  • strictfp关键字
  • strictfp使用范例

背景

因为处理器的缘故,有些处理器使用80位的浮点寄存器,而Java中的浮点数double类型只有64位(8字节),正因为寄存器多了些位数,会导致中间结果的精度为80位,比预期的要更精确。所以在不同的处理器平台,可能会导致浮点数的计算结果不一致,这里主要指使用64位浮点寄存器与使用80位浮点寄存器的处理器。

strictfp关键字

默认情况下,虚拟机设计者允许对中间计算结果采用扩展的精度(扩展的指数),即浮点运算结果不可预知。有时我们可能想要得到完全可预测的浮点计算,即浮点计算的结果在各处理器平台都一样,那么就可以使用strictfp关键字。但是由于该关键字会对中间结果进行截断操作,而截断操作需要消耗时间,所以在计算速度上比精确计算要慢。因此,在Java中,最优性能与理想结果之间存在冲突。
strictfp 关键字可用来修饰类、接口或方法。使用strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。严格的浮点计算表示浮点计算完全依照浮点规范IEEE-754来执行。需要注意的是,采用严格浮点计算可能会产生溢出,而默认情况下,不会产生溢出。对大多数程序来说, 浮点溢出不属于大向题。

strictfp使用范例

下面是一个使用strictfp 关键字修饰方法的范例。


```java
public class StrictfpTest
{public static strictfp void main(String[] args){float aFloat = 0.6710339f;  double aDouble = 0.04150553411984792d;  double sum = aFloat + aDouble;  float quotient = (float)(aFloat / aDouble);  System.out.println("float: " + aFloat);  System.out.println("double: " + aDouble);  System.out.println("sum: " + sum);  System.out.println("quotient: " + quotient);  }}
于是main方法中,所有的指令都将使用严格的浮点计算。

Java之strictfp关键字相关推荐

  1. java中strictfp关键字,java strictfp关键字用法大全详解

    一.strictfp关键字简介 strictfp是Java中提供的一个保留关键字,该关键字是从这第java JDK2版本儿开始出现的一直沿用到现在,只不过很多情况下都不怎么使用,所以容易被大家遗忘,因 ...

  2. java:volatile,instanceof,strictfp关键字

    volatile volatile是一个类型修饰符(type specifier),它是被设计用来修饰被不同线程访问和修改的变量.被volatile类型定义的变量,系统每次用到它时都是直接从对应的内存 ...

  3. java stric_Java中的strictfp关键字

    strictfp Strictfp-- Java 关键字. strictfp, 即 strict float point (精确浮点). strictfp 关键字可应用于类.接口或方法.使用 stri ...

  4. [转载] Java中的strictfp关键字

    参考链接: Java中的strictfp关键字 自Java2以来,Java语言增加了一个关键字strictfp.strictfp的意思是FP-strict,也就是说精确浮点的意思.在Java虚拟机进行 ...

  5. 【Java基础】关键字

    变量命名规则 标识符只能以大小写英文字母,数字,下划线和组成,而且开头必须是字母或者是下划线或者组成,而且开头必须是字母或者是下划线或者 同时Java中的标识符是区分大小写的,Count和count是 ...

  6. java标识符与关键字_4、Java标识符和关键字

    标识符:Java对各种变量,方法和类等要素命名时使用的字符序列称为标识符.(凡是自己可以起名的地方都叫标识符,都遵循标识符的规则) Java的命名规则: 1.标识符由字母.下划线"_&quo ...

  7. java里的关键字有什么用_java语言关键字有哪些?都有什么用处?

    Java语言中的关键字是非常多的,并且有着一定的规范,本文就将带大家深入了解其中详情. 关键字概念 Java中的关键字一般会被用来表示一种数据类型,或表示程序的结构等;它们是不能用作变量名.方法名.类 ...

  8. java中的关键字有哪些_java关键字复习

    java关键字复习 Java的主要工作是通过编程语言来制作互联网页面.制作动态效果以及网站等技术,以下是小编为大家搜索整理的java关键字复习, 希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕 ...

  9. java中的关键字 保留字_java中的标识符、关键字、保留字

    Java中关键字(keyword)和保留字(reservedword) Keyword :Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等. Reserv ...

  10. java中strictfp么意思_java中的strictfp的作用

    自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下. strictfp 的意思是FP-strict,也就是说精确浮点的意思.在J ...

最新文章

  1. 再谈session共享
  2. 每个软件开发人员都应该精通的10个基本工具
  3. android 浏览器源码分析,从源码出发深入理解 Android Service
  4. PHP的词法解析器:re2c
  5. 2.安装Ubuntu系统时,系统时间显示不对
  6. 原型继承与属性拷贝的混合应用
  7. HUB管理步骤、桥端设置步骤和客户端使用步骤
  8. R_Studio(学生成绩)使用主成分分析实现属性规约
  9. Python入门4_之字典的使用
  10. qprocess start怎么判断是否结束_怎么样判断两个IP地址是否在同一个网段
  11. 019.nexus搭建docker镜像仓库/maven仓库
  12. 专业美妆磨皮大师扩展插件支持PS2021版效果
  13. 【英语学习工具】学习英语硬背硬记太难了, 在这里解说 LeHoCat 提供免费的 视频集 工具的使用方法, 看视频学英语的工具, 制作英语教学课件的工具, 帮助自学英语(详细图文)第2版
  14. html 图片触碰有放大效果,CSS3 鼠标滑过图片突出放大效果
  15. Vue computed自动计算对象中的属性
  16. 因涉政内容导致域名被封禁
  17. java swing+mysql简单零件销售管理系统、订货决策系统
  18. 【信号与系统】Multisim 仿真连续时间系统的时域分析
  19. 经典好用的软件,不容错过
  20. 鼠标双击事件 MINIUI

热门文章

  1. 深入理解计算机系统第四版_深入理解计算机系统第三版2.4节中文版的一处翻译问题及英文版可能的一处错误...
  2. FISCO BCOS(五)———部署安装jdk1.8
  3. (day 22 - 全排列问题 dfs+剪枝+回溯 )剑指 Offer 38. 字符串的排列
  4. 如何使用nacos配置中心统一管理配置
  5. cpoint 两个点距离_Wasserstein距离学习笔记
  6. Java:电脑安装多版本jdk并切换版本
  7. Java基础:Collections
  8. c语言数据结构单链表输出链表操作,单链表一系列操作c语言实现(按照严蔚敏那本数据结构编写)...
  9. 1018 锤子剪刀布
  10. Otsu算法原理及实现