Java String 转double 精度丢失

简介: Java String 转double 精度丢失


Java String 转double 精度丢失
原本是我写了一个除法的方法然后返回值是 BigDecimal类型的数据

原代码


float num = (float) num1 * 100 / num2;   // num1 = 1   num2 = 1

DecimalFormat df = new DecimalFormat("0.00");

String format = df.format(num); //100.00


reture BigDecimal.valueOf(Double.parseDouble(format));//返回值为 100.0 精度丢失

经查询

比如一个字符串 str="30.273705487000021"
用方法Double.parseDouble(str)转化为double类型后,变成了30.27370548700002,最后一位消失不见了。似乎0-4都会省略掉最后一位。

修改代码为

float num = (float) num1 * 100 / num2;   // num1 = 1   num2 = 1

DecimalFormat df = new DecimalFormat("0.00");

String format = df.format(num); //100.00


reture new BigDecimal(format);//返回值为 100.00  成功解决

相关文章
|
3天前
|
Java 索引
String字符串常用函数以及示例 JAVA基础
String字符串常用函数以及示例 JAVA基础
|
4天前
|
Java 编译器 ice
【Java开发指南 | 第十五篇】Java Character 类、String 类
【Java开发指南 | 第十五篇】Java Character 类、String 类
24 1
|
2天前
|
存储 安全 Java
Java中的这些String特性可能需要了解下
Java中的String特性你知道哪些?虽然String很常见,通过源码可以看到String的值传递、字符串表和不可变性。本文基于JDK17说明。
9 1
|
2天前
|
存储 Java
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
|
4天前
|
Java
Java String 避免空指针的方法
Java String 避免空指针的方法
5 0
|
4天前
|
安全 Java 编译器
Java中String、StringBuilder和StringBuffer的区别
Java中String、StringBuilder和StringBuffer的区别
10 1
|
4天前
|
存储 缓存 安全
【 Java中String源码分析(JVM视角你不来看看?】
【 Java中String源码分析(JVM视角你不来看看?】
14 0
|
4天前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
4天前
|
Java 索引
Java String应用与开发
Java String应用与开发
22 0
|
4天前
Swagger2异常:java.lang.NumberFormatException: For input string: ““
Swagger2异常:java.lang.NumberFormatException: For input string: ““
21 1