2019独角兽企业重金招聘Python工程师标准>>>
package com.text.java;
import java.math.BigDecimal;
/**
*
* 功能:支付数字计算误差
*
* @ClassName: PayDouble
* @version V1.0
* @date 2016-8-10
* @author wuxw
*/
public class PayDouble {
public static void main1(String[] args) {
float f = 0.1f;
float sum = 0;
for( int i&#61;0; i<1000000; i&#43;&#43;)
{
sum &#43;&#61; f;
}
System.out.println(sum);
// 输出:100958.34 而不是&#xff11;&#xff10;&#xff10;&#xff10;&#xff10;&#xff10;&#xff10;
}
//输出
/**
*
* 功能&#xff1a;0.29
28
*
* &#64;author wuxw
* &#64;param args
* &#64;throws
*/
public static void main2(String[] args) {
double d &#61; 29.0 * 0.01;
System.out.println(d);
System.out.println((int) (d * 100));
}
public static void main(String[] args) {
BigDecimal b1 &#61; new BigDecimal(Double.toString(0.01));
BigDecimal total &#61; new BigDecimal(Double.toString(0));
for( int i&#61;0; i<1000000; i&#43;&#43;)
{
total&#61;total.add(b1);
}
System.out.println("BigDecimal total&#61;"&#43;total);
// 输出: 10000.00
}
}
- BigDecimal(int) 创建一个具有参数所指定整数值的对象。
- BigDecimal(double) 创建一个具有参数所指定双精度值的对象。
- BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
- BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
BigDecimal 的运算方式 不支持 &#43; - * / 这类的运算 它有自己的运算方法&#xff1a;
- BigDecimal add(BigDecimal augend) 加法运算
- BigDecimal subtract(BigDecimal subtrahend) 减法运算
- BigDecimal multiply(BigDecimal multiplicand) 乘法运算
- BigDecimal divide(BigDecimal divisor) 除法运算