java中不常见的关键字:strictfp

1.strictfp, 即 strict float point (精确浮点)。
  strictfp 关键字可应用于类、接口或方法。使用 strictfp
关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口
使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是
IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
  如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.

例子如下:

不使用strictfp的例子:

 1 public class TestNoStrictfp {
 2     private static double aDouble = 0.0555500333333212d;
 3     private static float aFloat = 0333000000222f;
 4
 5     public static void main(String[] args) {
 6
 7         double cDouble = aDouble / aFloat;
 8
 9         System.out.println("aDouble:" + aDouble);
10         System.out.println("aFloat:" + aFloat);
11         System.out.println("cDouble:" + cDouble);
12     }
13
14 }
使用strictfp的例子:
 1 public strictfp class TestStrictfp {
 2     private static double aDouble = 0.0555500333333212d;
 3     private static float aFloat = 0.0333000000222f;
 4
 5     public static void main(String[] args) {
 6
 7         double cDouble = aDouble / aFloat;
 8
 9         System.out.println("aDouble:" + aDouble);
10         System.out.println("aFloat:" + aFloat);
11         System.out.println("cDouble:" + cDouble);
12     }
13
14 }

运行结果:

不使用strictfp的例子运行结果:

aDouble:0.0555500333333212
aFloat:3.33000016E11
cDouble:1.6681690896577544E-13

使用strictfp的例子运行结果:

aDouble:0.0555500333333212
aFloat:0.0333
cDouble:1.668169110346482

原文地址:https://www.cnblogs.com/zhuitian/p/11441867.html

时间: 2024-08-26 01:06:46

java中不常见的关键字:strictfp的相关文章

java中不常见的keyword:strictfp,transient

1.strictfp, 即 strict float point (精确浮点). strictfp keyword可应用于类.接口或方法.使用 strictfp keyword声明一个方法时,该方法中全部的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范.当对一个类或接口使用 strictfp keyword时,该类中的全部代码,包含嵌套类型中的初始设定值和代码,都将严格地进行计算.严格约束意味着全部表达式的结果都必须是 IEEE 754 算法对操作数预

Java中的50个关键字

Java中的50个关键字 关键字也称为保留字,是指java语言中规定了特定含义的标示符.对于保留字,用户只能按照系统规定的方式使用,不能自行定义.Java中有50个常用关键字: 与数据类型相关(10) 关键字 类型 占字节数 备注 boolean 布尔数据类型 1 有true和false两个值 int 整型数据类型 4 long 长整型数据类型 8 short 短整型数据类型 2 byte 字节数据类型 1 大小范围为-27-27-1 float 浮点型(实数型) 4 double 双精度型数据

Java中的两个关键字——super、this

Java中的两个关键字——super.this 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造器中调用父类的构造器 使用super关键字注意事项: 1.当子类和父类都有同名的属性时,在子类中如果要使用父类的属性 super . 属性 2. super只能应用在成员方法和构造方法中,不能用在静态方法中(和this是一样的) 3.如果在构造方法中使用必须放在

Java中this和static关键字及代码块

this: 可以使用this表示类中的属性------this.name=name 可以使用this强调调用的是本类的方法 可以使用this调用本类的构造方法------this();调用本类中无参构造方法 可以使用this表示当前对象(调用方法的对象)----最重要的用途 static: 声明属性---------属性则为全局变量 声明方法---------Person.setName("Tom");使用类名称调用static方法 普通代码块:直接在方法或是语句中定义的代码块 pub

Java学习之道:Java中十个常见的违规编码

最近,我给Java项目做了一次代码清理工作.经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)重复出现在代码中.因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性. 这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyle,FindBugs和PMD检查出.一起来看下: 一.Eclipse编译器提供源代码格式输入 Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码).你可以使用下面的这

Java中的标识符跟关键字

Java中的标识符: Java对包.类.方法.参数和变量等要素命名时使用的字符序列称为标识符. 用来标记一些名称,如:包名.类名.方法名.参数名.变量名等.标识符可以由任意顺序的大小字母.数字.下划线和美元符号组成,但标识符不能以数字开头,不能是Java中的保留关键字.标识符区分大小写.标识符长度没有限制.(自己能命名的地方). 定义标识符时,应该遵循以下规则: 1.包名所有字母一律小写(建议非强制) 2.类名和接口名每个单词的首字母大写.如:ArrayList 3.常量名所有字母大写,单词之间

Java中this、static关键字的内存图解

Java中的关键字有很多,abstract  default  goto*  null  switch  boolean  do  if  package  nchronzed  break  double  implements  private  this  byte  else  import  protected  throw  throws  case  extends  instanceof  public  transient  catch  false  int  return 

Java中this和super关键字

今天练习到Java中的this和super关键字,我有如下总结: 1.子类继承父类,子类初始化对象,必须先调用父类构造方法,因为随时有可能要使用父类的成员变量. 2.get和set方法只是对成员变量进行赋值操作,而非初始化. 3.构造方法既能对成员变量进行初始化,又能对其进行赋值操作. 4.子类只要调用父类的构造方法(不管是带参还是无参都行,都用super(······)调用)即可对父类的成员进行初始化, 5.如果子类有两个构造方法,一个可以调用父类带参构造方法,另一个可以用this(···)调

Java中怎么使用this关键字?在什么时候可以使用?

在java中,this通常指当前对象,或当前对象的某个成员,你可以利用this来实现这个目的.this的另一个用途是调用当前对象的另一个构造函数. 最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来致命你要使用某个成员,使用方法"this.成员名",而不带this的那个便是形参.另外,还可以用"this.方法名"来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访