在java中存在一些特殊的数字,他的结果可能跟我们的常规逻辑不一样,比如绝对值式负数、加1反而比自己更小...
来看一下。
/**
* @description: 数字魔法
* @author: JandMin
**/
public class MagicNumber {
public static void main(String[] args) {
// 越界数字
overstep();
System.out.println("------------------ ----------------");
// 浮点数的奥秘
decimalSecret();
}
/**
* 特殊的浮点数
*/
private static void decimalSecret() {
System.out.println("======== 是否存这么一个数,使得 i == i+1 ======");
double i = Double.POSITIVE_INFINITY;
System.out.println("Double.POSITIVE_INFINITY = " + i + " 加1 :" + (i + 1)); // Double.POSITIVE_INFINITY = Infinity 加1 :Infinity
System.out.println("i == i + 1:" + (i == (i + 1))); // i == i + 1:true
System.out.println("======== 是否存这么一个数,使得 i == i-1 ======");
System.out.println("Double.POSITIVE_INFINITY = " + i + " 减1 :" + (i - 1)); // Double.POSITIVE_INFINITY = Infinity 减1 :Infinity
System.out.println("i == i - 1:" + (i == (i - 1))); // i == i - 1:true
System.out.println("======== 是否存这么一个数,使得 j != j ======");
double j = Double.NaN;
System.out.println("Double.NaN = " + j + " j != j :" + (j != j)); // Double.NaN = NaN j != j :true
}
/**
* 数字越界
*/
private static void overstep() {
System.out.println("======== 存在这么一个数:它的绝对值是负数 ======");
System.out.println("Double.MIN_VALUE = " + Double.MIN_VALUE + " 的绝对值:" + Math.abs(Double.MIN_VALUE)); // Double.MIN_VALUE = 4.9E-324 的绝对值:4.9E-324
System.out.println("Float.MIN_VALUE = " + Float.MIN_VALUE + " 的绝对值:" + Math.abs(Float.MIN_VALUE)); // Float.MIN_VALUE = 1.4E-45 的绝对值:1.4E-45
System.out.println("Long.MIN_VALUE = " + Long.MIN_VALUE + " 的绝对值:" + Math.abs(Long.MIN_VALUE)); // Long.MIN_VALUE = -9223372036854775808 的绝对值:-9223372036854775808
System.out.println("Integer.MIN_VALUE = " + Integer.MIN_VALUE + " 的绝对值:" + Math.abs(Integer.MIN_VALUE)); // Integer.MIN_VALUE = -2147483648 的绝对值:-2147483648
System.out.println("Short.MIN_VALUE = " + Short.MIN_VALUE + " 的绝对值:" + (short)Math.abs(Short.MIN_VALUE)); // Short.MIN_VALUE = -32768 的绝对值:-32768
System.out.println("Byte.MIN_VALUE = " + Byte.MIN_VALUE + " 的绝对值:" + (byte)Math.abs(Byte.MIN_VALUE)); // Byte.MIN_VALUE = -128 的绝对值:-128
System.out.println("======== 存在这么一个数:i+1 < i ======");
System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE + " 加1 :" + (Integer.MAX_VALUE + 1)); // Integer.MAX_VALUE = 2147483647 加1 :-2147483648
System.out.println("======== 存在这么一个数: i != 0 && i == -i ======");
System.out.println("Integer.MIN_VALUE = " + Integer.MIN_VALUE + " 负数 :" + (Integer.MIN_VALUE * -1)); // Integer.MIN_VALUE = -2147483648 负数 :-2147483648
}
}
如果还有其它有意思的数字,欢迎留言!!