java中Double精度问题

问题描述:

java代码如下:

@Test

public void test01(){

    String num1 ="1.3";

    String num2 ="1.10";

    String v = String.valueOf(Double.valueOf(num1) + Double.valueOf(num2));

    System.out.println(v);

}

计算输出结果:2.4000000000000004


问题分析:

    Java中的简单浮点数类型float和double不能够进行运算,

解决方案:

使用BigDecimal 来计算,可以看到它的构造函数只能使用String构建,加减乘除都有对应的计算方法,直接调用,非常方便,如果想保留几位小数点,可以看它的API,包括向上向下取值,四舍五入多个方法,基本满足.

public class TestStringSum{

    @Test

    public void test01(){

        String num1 ="1.3";

        String num2 ="1.10";

        String v = String.valueOf(Double.valueOf(num1) + Double.valueOf(num2));

        System.out.println(v);

        BigDecimal bd =new BigDecimal(num1).add(new BigDecimal(num2));

        System.out.println(bd);

    }

}

这里没有指定保留几位小数点,它默认是保留你计算的数值长度的小数点。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 在java中float赋值给double,会产生精度问题。 输出为2.0999999046325684。 小...
    我叫小小强阅读 19,293评论 2 23
  • 包装类(包裹类 Wrapper) : 定义Java 针对八种 基本数据类型 提供了相应的包装类 目的使得可以创建对...
    Finlay_Li阅读 305评论 0 0
  • 二.java技术方面的常见问题? 1.String是基本数据类型么? 答:不是基本数据类型,基本数据类型有8种,b...
    java日记阅读 7,015评论 0 5
  • (一)Java 5 相关知识点 1)增强型 for 循环: 答:增强 for 循环:foreach 语句,fore...
    tjqbtp阅读 550评论 0 1
  • 创建一个项目的三个步骤 1.创建一个项目[工程 ] java project 创建包package【包名:公司域...
    happying_001阅读 363评论 0 0