`

java关键字——strictfp

    博客分类:
  • Java
阅读更多

strictfp, 即 strict float point (精确浮点)。
  
strictfp关键字可应用于类、接口、方法。

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

下面的示例演示了一个使用 strictfp 修饰符声明的类。


import org.junit.Test;
public strictfp class StrictFPTest {

	public StrictFPTest() {}
	@Test
	public void test() {
		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);
	}
}

下面的示例演示了一个使用 strictfp 修饰符声明的方法。
public class StrictFPTest2 {

	public float aFloat;
	public double aDouble;

	public StrictFPTest2() {
	}

	public strictfp double add(float a, double b) {
		return (a + b);
	}

	public static void main(String[] args) {
		StrictFPTest2 myClass2 = new StrictFPTest2();
		myClass2.aFloat = 0.6710339f;
		myClass2.aDouble = 0.04150553411984792d;
		double sum = myClass2.add(myClass2.aFloat, myClass2.aDouble);
		System.out.println("float: " + myClass2.aFloat);
		System.out.println("double: " + myClass2.aDouble);
		System.out.println("sum: " + sum);
	}
}
分享到:
评论

相关推荐

    java关键字.docx

    strictfp:严格浮点,用于声明一个浮点计算的方法。 super:超类,用于调用父类的构造方法或方法。 switch:开关,用于switch语句中的不同情况。 synchronized:同步,用于实现线程同步的方法。 this:这个,用于...

    strictfp-changes.pdf

    关于strictfp关键字的官方语法解释

    99乘法表java源码-biji:课堂笔记

    java关键字 abstract do implement private this boolean double import protected throw break else instanceof public throws byte extends int return transient case false interface short true catch final ...

    JAVA笔试总结 -- 非常全面

    native,transient,volatile,strictfp,CMM,synchronized,java socket,压缩与解压缩,多线程,垃圾回收算法,JVM ClassLoader,IO流,反射机制,JNDI, GUI布局管理器,JMS, Java Mail, JNDI reference,java事件处理...

    java面试800题

    Q0040 Java关键字 "51个:abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, final, finally, float, for, goto, if, implements, import, ...

    JavaOOPTrainingCourse

    Java 关键字(静态、最终、strictfp)。 内部类和嵌套类。 抽象类。 第2课。 继承和封装。 第3课。 多态性。 InstanceOf 关键字。 异常(已检查、未检查、错误)。 编写自己的异常。 第 4 课。 接口(功能接口,...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Learn.Java.for.Android.Development_Apress.2010+src

    Continuing, you investigate strictfp, class literals, synchronized, volatile, the enhanced for loop statement, autoboxing/unboxing, and transient fields. The book also briefly presents most (if not ...

    仿知乎java源码-Java2Cpp-Translator:Java到C++转换器

    循环、可变参数、装箱/拆箱、抽象类、同步方法和语句、strictfp、瞬态、 volatile、lambdas 等。 目标语言是 C++ 的受限版本,没有虚方法、继承、模板、lambda 抽象、auto、decltype 等。 翻译器主要对基本翻译建模...

    java学习总结 1.《Java核心技术》.rar

    Java中没有 3、移位操作符右边的参数要先进行模32运算(当左边的变元是long型,则模64),如1。浮点运算的中间结果程度是不一致的。有些处理器适用80bit浮点存储器,有些则使用64bit、80bit。直到最后才把结果截断为...

    java_demo:这是java_demo

    抽象const for int公共抛出断言继续最终接口返回抛出布尔值默认值最终长短瞬变中断做浮点数本地静态真字节双转到新strictfp尝试情况否则,如果null超级无效捕获枚举实现包开关volatile char扩展导入私有同步,而类...

    Learning-Java-Beginner-Level:开始学习 Java 时包含的练习

    --> JAVA IDENTIFIERS:- 用于类、变量和方法的名称称为标识符。 --> JAVA MODIFIERS:- 像其他语言... 有两类修饰符: 访问修饰符:default、public、protected、private 非访问修饰符:final、abstract、strictfp

    【05-面向对象(下)】

    •一个类可以实现一个或多个接口,继承使用extends关键字,实现接口则使用implements关键字。 实现接口 •一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法(也就是...

    Speed's IRC API-开源

    一个用于IRC开发的Java API,特别是为IRC bot开发的,但几乎可以用于任何与IRC相关的内容。 可以在irc.strictfp.com的#IRC频道上找到我们的IRC频道,希望在那里见到您!

Global site tag (gtag.js) - Google Analytics