Difference between java and C# doubles

2019-09-04 02:49发布

问题:

double is a type that represents 64-bit IEEE 754 floating-point number in Java

double is a type that represents 64-bit double-precision number in IEEE 754 format in C#.

Both languages follow the same specification. So why there is difference in following code? I checked Mono as well.

Double.MIN_VALUE == (Double.MIN_VALUE + 1.0); // false 

Java ideone

Console.WriteLine(Double.MinValue == (Double.MinValue + 1.0)); // true

C# ideone

回答1:

Java's Double.MIN_VALUE is 2^-1074

while

C#'s Double.MinValue is -1.7976931348623157E+308

They have different values because they follow a different semantic.

In Java :

A constant holding the smallest positive nonzero value of type double

In C# :

Represents the smallest possible value of a Double [...] The value of this constant is negative 1.7976931348623157E+308



回答2:

C#'s Double.MinValue : The value of this constant is negative 1.7976931348623157E+308.

Java's Double.MIN_VALUE: A constant holding the smallest positive nonzero value of type double, 2-1074.



标签: c# java mono