数值类型的计算,是实际的开发代码过程中,很常用,很简单。
这并不表示没有坑等着我们,谁让我们程序员不是在写Bug,就是在写Bug的过程中呢?

1 基本概念

浮点类型,用于表示有小数部分的数值。
在Java中有两种浮点类型:

float4kb大约 ± 3.4.02 823 47E+38F(有效位数为6-7位)
double8kb大约 ±1.79.97 693 134 862 315 70E+308(有效位数为15位)

所有浮点数值计算都遵循IEEE 745规范。
三种特殊类型的浮点数值:

一个整数除以0的结果为正无穷大,计算 0/0 或者负数的平方根结果为NaN。

2 代码示例

浮点数相减

//  两个浮点数相减
double subtrahend = 2.0;
double minuend = 1.1;
double remainder = subtrahend - minuend;

System.out.println("两个浮点数相减,2.0减去1.1的结果为:" + remainder);

说明:注意实际输出结果不是0.9,而是:0.8999999999999999

浮点数循环

// 在循环语句中,判断两个浮点数是否相等
for (double i = 0; i != 10 ; i += 0.1) {    
System.out.println("循环语句中的浮点数等式比较:" + i);
}

说明:不要在循环语句中,使用浮点数值类型做判断,由于精度丢失,会造成死循环。

大数值计算概率

// 使用BigDecimal数值类型,计算在490个数字中,抽取60个数字的概率
int pickNumber = 60;
int sumTotal = 490;
BigDecimal probability = BigDecimal.valueOf(1);

for (int i = 1; i <= pickNumber; i++){   
probability = probability.multiply(BigDecimal.valueOf(sumTotal - i + 1)).divide(BigDecimal.valueOf(i));
}

System.out.println(probability);

说明:输出的结果为 716395843461995557415116222540092933411717612789263493493351013459481104668848
概率值表示为 1 / 716395843461995557415116222540092933411717612789263493493351013459481104668848
大数值类型BigDecimal采用实现的计算方法(add,subtract,multiply,divide)

3 总结


作者简介

一个真的有思想,不穿格子衬衫的程序员。

12-29 10:55