是否有标准和/或可移植的方式来表示C(++)程序中最小的负值(例如,使用负无穷大)?
float.h中的DBL_MIN是最小的正数.
我有一些像这样的代码:
class Foo {
public double x;
}
void test() {
Foo foo = new Foo();
// Is this a valid way to test for zero? 'x' hasn't been set to anything yet.
if (foo.x == 0) {
}
foo.x = 0.0;
// Will the same test be valid?
if (foo.x == 0) {
}
}
Run Code Online (Sandbox Code Playgroud)
我基本上希望将来避免被零除的例外.
谢谢
以下问题表明Double的最小值是-Double.MAX_VALUE.Float(即-Float.MAX_VALUE)也是如此吗?
当我们在java中的任何一个原始类型上使用MIN_VALUE函数时,它为我们提供了该类型的最小值.但是在float和double的情况下,它返回最小正值,虽然float和double也可以有负值.
在下面的程序中,结果被认为0.0是小于Double.MIN_VALUE.为什么?
我们有一个解决方案(Doubles仅使用和使用compareTo),我想了解为什么拆箱在这里失败.
import java.util.Date;
import java.util.Calendar;
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
double max = 99999.9999;
double min = Double.MIN_VALUE;
Double test = 0.0;
System.out.println(max > test); // expect true; is true
System.out.println(test > min); // expect true; is false
}
}
Run Code Online (Sandbox Code Playgroud) 我尝试将Doubles Min / Max与0.0进行比较。
Double min = Double.MIN_VALUE;
Double max = Double.MAX_VALUE;
Double d = new Double (0.0);
System.out.println (min < d);
System.out.println (min.compareTo (d) < 0);
System.out.println (d < max);
System.out.println (d.compareTo (max) < 0);
Run Code Online (Sandbox Code Playgroud)
我希望所有输出都是正确的。
但是我得到了
false
false
true
true
Run Code Online (Sandbox Code Playgroud)
为什么?
为什么以下程序输出为0.0.它是返回Double的最小值.
public class Test {
public static void main(String[] args){
System.out.println(Math.min(Double.MIN_VALUE, 0.0d)); // 0.0
}
}
Run Code Online (Sandbox Code Playgroud)
最小值接近于零,但为什么它给出0.0而不是精确值?