java和C#双打的区别

Luk*_*don 0 c# java mono

double 是一种在 Java 中表示 64 位 IEEE 754 浮点数的类型

double 是一种在 C# 中表示 IEEE 754 格式的 64 位双精度数的类型。

两种语言都遵循相同的规范。那么为什么下面的代码会有不同呢?我也检查了 Mono。

Double.MIN_VALUE == (Double.MIN_VALUE + 1.0); // false 
Run Code Online (Sandbox Code Playgroud)

Java ideone

Console.WriteLine(Double.MinValue == (Double.MinValue + 1.0)); // true
Run Code Online (Sandbox Code Playgroud)

C# ideone

Den*_*ret 5

JavaDouble.MIN_VALUE2^-1074

尽管

C#Double.MinValue-1.7976931348623157E+308

它们具有不同的值,因为它们遵循不同的语义。

在 Java 中

一个常量,持有 double 类型的最小正非零值

在 C# 中

代表一个 Double [...] 的最小可能值这个常数的值为负 1.7976931348623157E+308