float、double最小值不符合
float、double两种类型的最小值与Float.MIN_VALUE、 Double.MIN_VALUE的值并不相同,这是为什么?网上说:
实际上Float.MIN_VALUE和Double.MIN_VALUE分别指的是float和double类型所能表示的最小正数。也就是说存在这样一种情况,0到±Float.MIN_VALUE之间的值float类型无法表示,0到±Double.MIN_VALUE之间的值double类型无法表示。这并没有什么好奇怪的,因为这些范围内的数值超出了它们的精度范围。
我还是不能理解,为什么0到±Float.MIN_VALUE之间的值float类型无法表示,0到±Double.MIN_VALUE之间的值double类型无法表示。如果不能表示的话,那float和double不就没用了? --------------------编程问答-------------------- 实际上Float.MIN_VALUE和Double.MIN_VALUE分别指的是float和double类型所能表示的最小正数。也就是说存在这样一种情况,0到±Float.MIN_VALUE之间的值float类型无法表示,0到±Double.MIN_VALUE之间的值double类型无法表示。这并没有什么好奇怪的,因为这些范围内的数值超出了它们的精度范围。
唔,打个比方,int 类型只能表示整数,0,1,2,……,那么,从0开始,到int类型所能表示的最小正数,就是1。
int类型无法表示从0~1之间的任何数,比如说,0.1,,,0.323,这些都不能用int 来表示,对吧?因为那些范围的数值超出了int类型的精度范围。但是,这样不能表示int类型无意义。
那么,float也是一样的。从0开始到float类型所能表示的最小正数,也就是Float.MIN_VALUE,这中间一定有一个范围的数,是float类型无法表示的。 --------------------编程问答-------------------- 浮点数是不能用于精确比较的!
补充:Java , Java EE