1、java中的strictfp的作用-精确浮点运算

strictfp 的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令人满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果想让浮点运算更加精确, 而且不会因为不同的硬件平台所执行的结果不一致的话,那就用关键字strictfp
可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字

正确和错误的示例

①、在接口上使用strictfp关键字

  1. /**
  2. * NumAdd
  3. * <p>
  4. * encoding:UTF-8
  5. *
  6. * @author Fcant 下午 23:03 2020/6/26/0026
  7. */
  8. public strictfp interface NumAdd {
  9. void f();
  10. }

image.png

②、在类和方法上使用strictfp关键字

  1. /**
  2. * ClassUseStrictfp
  3. * <p>
  4. * encoding:UTF-8
  5. *
  6. * @author Fcant 下午 23:11 2020/6/26/0026
  7. */
  8. public strictfp class ClassUseStrictfp {
  9. public ClassUseStrictfp() {
  10. }
  11. public strictfp void sayHello() {
  12. System.out.println("Hello");
  13. }
  14. }

image.png

2、Java中货币选择的类型

java.math.BigDecimal