gpt4 book ai didi

java - Corretto Java float

转载 作者:行者123 更新时间:2023-11-30 10:06:24 28 4
gpt4 key购买 nike

Java 通常有包含 float 的问题点算术非正规和原正规值包含在这样的操作上:

double a = 0.1;
double b = 0.1;
double x = a*b;
out.println();
out.println(x);

通过 float 或 double 类型。

谁能告诉我如何告诉 Coretto Java进入非非正规、精确的浮点模式?

最佳答案

“Can someone please tell me how to tell Coretto Java to enter non denormal, accurate floating point mode?”

这不是 Corretto 特有的问题。这是一个普遍的 Java 问题。简单的答案与您在其他版本的 OpenJDK 中使用的方法相同。

你不能使用像 float 和 double 这样的 Java 基本类型。您必须求助于另一个数学库。 java.math. BigDecimal可能是一个好的开始。

jshell> import static java.math.BigDecimal.*;
jshell> var a = ONE.divide(TEN)
a ==> 0.1
jshell> var b = ONE.divide(TEN)
b ==> 0.1
jshell> a.add(b)
$16 ==> 0.2

简单描述:

原始类型 float 和 double 在 Java 语言规范中定义。 Java 实现了其表示的 IEEE 754 定义。

4.2.3. Floating-Point Types, Formats, and Values The floating-point types are float and double, which are conceptually associated with the single-precision 32-bit and double-precision 64-bit format IEEE 754 values and operations as specified in IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985 (IEEE, New York).

https://docs.oracle.com/javase/specs/jls/se11/html/jls-4.html#jls-4.2.3

因此,由于 IEEE 754 二进制表示,预计会出现以下输出。

jshell> double a = 0.1;
a ==> 0.1
jshell> double b = 0.1;
b ==> 0.1
jshell> double x = a*b;
x ==> 0.010000000000000002

引用资料:

Is there any IEEE 754 standard implementations for Java floating point primitives?

关于java - Corretto Java float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54682185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com