java double类型计算出现的精度问题

 double d=100*1.005;

  结果d的结果为100.49999999999999

  怎么解决这种问题呢,用DecimalFormat,它对double类型的进行四舍五入处理用法如下:

  

DecimalFormat df=new DecimalFormat(pattern);
  String nums=df.format(value);

  这里给pattern:".00"

  value:100*1.005

  nums值为:100.50

时间: 2024-10-17 08:34:04

java double类型计算出现的精度问题的相关文章

Double 类型运算时的精度问题

double 类型运算时的 计算的精度不高,经常会出现0.999999999999999这样的情况,那么就需要用BigDecimal   它是java提供的用来高精度计算的工具类 下面是对这个类的一个包装,方便使用: package cn.soft.util; import java.io.Serializable; import java.math.BigDecimal; import org.springframework.stereotype.Component; /** *类描述: do

java浮点类型计算

java浮点类型需要采用java.math.*这个工具包,这样的计算结果才是我们想要的.呵呵 1 import java.math.BigDecimal; 2 import java.text.NumberFormat; 3 4 5 /** 6 * 数学计算类 7 * @author mingge 8 * 9 */ 10 public class ArithUtil { 11 12 private ArithUtil(){ 13 14 } 15 16 /** 17 * 浮点数加法 18 * @p

精度更高的double类型计算工具类(借助BigDecimal类型)

/** * 提供精確的加法運算 * @param args */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供了精確的減法運算 * * @param

java double类型保留两位小数和四舍五入

package com.clzhang.sample; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.NumberFormat; public class DoubleTest { /** * 保留两位小数,四舍五入的一个老土的方法 * @param d * @return */ public static double fo

Java Double类型保存两位小数

1.保留两位小数 double c=19.98555315; java.text.DecimalFormat df = new java.text.DecimalFormat("0.00"); String str = df.format(c);

double 类型运算会出现精度问题

要先转换为字符串,后进行运算,可以写个方法做乘法运算public static double mul(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doubleValue();}加法: return b1.add(b2).doubleValue();

java double类型的保留位数总结

在mysql查询的时候利用mysql的函数进行处理,如:format,CAST(t.matching_money as decimal(38, 0)) matching_money,rund 等处理: jsp里用自定义f标签显示:

关于java中Double类型的运算精度问题

标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.

java double 计算损失精度

计算double类型的数时有时候会多出0.000000001,会有不确定个数的0,在计算时将其转为BigDecimal就不会出错. BigDecimal sum = new BigDecimal(0.0);                BigDecimal tmp = new BigDecimal(0.0);                for(int i=0; i<list.size(); i++){                    tmp = new BigDecimal(list