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
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
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.