游戏王魔导士:帮忙看一下我用JAVA写的求各数据类型的最值算法错在哪,谢谢!

来源:百度文库 编辑:高考问答 时间:2024/04/30 17:16:44
//求各数据类型的最值
//可能这个题目很简单,望指教!

public class d {
public static void main(String[] args) {
int INT_MAX = (int)Float.MAX_VALUE,INT_MIN = (int)Float.NEGATIVE_INFINITY;
short SHORT_MAX = (short)Float.POSITIVE_INFINITY,SHORT_MIN = (short)Float.NEGATIVE_INFINITY;
long LONG_MAX = (long)Float.MAX_VALUE,LONG_MIN = (long)Float.NEGATIVE_INFINITY;

System.out.println("\nSHORT-MAX = " + SHORT_MAX + "\nSHORT-MIN = " + SHORT_MIN);

System.out.println("\nINT-MAX = " + INT_MAX + "\nINT-MIN = " + INT_MIN);

System.out.println("\nLONG-MAX = " + LONG_MAX + "\nLONG-MIN = " + LONG_MIN);

System.out.println("\nFLOAT-MAX = " + Float.MAX_VALUE + "\nFLOAT-MIN = " + Float.MIN_VALUE);

System.out.println("\nDOUBLE-MAX = " + Double.MAX_VALUE + "\nDOUBLE-MIN = " + Double.MIN_VALUE);

}
}

1.运行的时候那个short的值是-1,0。无论我怎么改也得不到正确的答案。

2.浮点数中最大值是相符的,但最小值怎么就只保留了两位有效数字?这是怎么回事呢?

我实在是搞不明白,是不是我安装JDK包(1.4.2_11)的问题,还是怎么搞的。
问题补充:还有就是这个问题能不能用位运算来解决呢?

谢谢!

jdk没有问题,只有你的程序有问题

各种数据类型所表示的数据范围是不同的,有些类型的最大值达不到Float.MAX_VALUE那么大(比如Short),那么就得不到正确的结果了。
难道Interger没有MAX_VALUE么(是有的)
你可以用Long/Integer/Short这些对象的MAX_VALUE值,别用Float的来回转换!

天.好复杂.看不懂哦!