java.lang.NumberFormatException: For input string: “0.001”

java.lang.NumberFormatException: For input string: “0.001”

运行项目时出现这个数据类型转换的问题:java.lang.NumberFormatException: For input string: “0.001”

这句话明确告诉了我们是数字格式异常,接着后面有 For input string: “0.001 ” 提示,这就告诉我们你当前想把 “0.001” 转换成数字类型时出错了,这样就很确切知道问题所在。

后台返回给的值是个String类型的数据,在前端需要展示百分比数据。

这是我们的逻辑应该是 用String字符串数据接收,然后转换为double类型

        String num = myRankingRes.getData().getEarnings();//后台返回数据 即报错0.001
        double numToDouble = Double.parseDouble(num); // 先转换成double类型
        //Integer i = numToDouble.intValue(); // 再转换成int类型(会损失精度)这里不建议采用
        mTextView.setText(numToDouble * 100 + "%");//收益

eg:Double.parseDouble(“0.059”)*100;    结果有点看不懂  5.8999999999999995;

而如果修改一下数字   Double.parseDouble(“0.0592”)*100;  结果却是正常  5.92

可能是浮点型计算时的误差吧!(精度的问题)

public static void main(String[] args) {
        String str = "0.059";
        double parseDouble = Double.parseDouble(str);
        System.out.println(parseDouble);
        System.out.println(parseDouble * 100);
        System.out.println("=================");
        String str1 = "0.0592";
        double parseDouble1 = Double.parseDouble(str1);
        System.out.println(parseDouble1);
        System.out.println(parseDouble1 * 100);
        System.out.println("=================");
        BigDecimal bd = new BigDecimal(parseDouble * 100);
        double doubleValue = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println(doubleValue);
        System.out.println("=================");
        BigDecimal b = new BigDecimal("0.0592");
        BigDecimal multiply = b.multiply(new BigDecimal("100"));
        System.out.println(multiply.doubleValue());

    }

结果如下:

0.059
5.8999999999999995
=================
0.0592
5.92
=================
5.9
=================
5.92

根据自己返回的数据,斟酌后用适合自己的方式。

 

书到用时方恨少,纸上得来终觉浅。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114989.html原文链接:https://javaforall.net

(0)
上一篇 2021年10月1日 下午6:00
下一篇 2021年10月1日 下午6:00


相关推荐

  • qi接收启动协议_基于QI协议的无线充电通信系统「建议收藏」

    qi接收启动协议_基于QI协议的无线充电通信系统「建议收藏」龙源期刊网http://doc.docsou.com基于QI协议的无线充电通信系统作者:胡江浩张中炜来源:《中国新通信》2016年第03期【摘要】无线充电技术的学名又叫做无线电能传输,其原理非常类似于变压器,都是通过发射电路产生一个交变电流通过初级线圈,从而在初级线圈上感应出一个交变电磁场,次级线圈通过接收该交变电磁场从而产生感应电流,通过电磁感应实现能源的传输。该文主要介绍了一种无线充电领域中…

    2022年6月16日
    34
  • typedef enum的用法(枚举)

    typedef enum的用法(枚举)include stdio h include string h include stdlib h intmain typedefenum saturday sunday 0 monday tuesday wednesday thursday friday workday stdlib h string h stdio h

    2025年12月9日
    8
  • php – cURL从重定向获取url

    php – cURL从重定向获取url

    2022年2月10日
    51
  • 百度文心一言应用:L1B3RT45中文提示词构造技巧

    百度文心一言应用:L1B3RT45中文提示词构造技巧

    2026年3月12日
    3
  • 信号各种变换 python实现 DFT,STFT,CWT,DWT

    信号各种变换 python实现 DFT,STFT,CWT,DWT目录数据读取傅里叶变换短时傅里叶变换数据读取首先我们有这么一个信号 下图是数据格式 即一列一个数 我们读取以后只要前 500 个数 a b withopen ECG1 1 txt asfile obj forcontentin obj a append int content foriinrange 500 b append a i plt plot b plt show

    2026年3月16日
    2
  • clientHeight和offsetHeight

    clientHeight和offsetHeightclientHeight 包括 padding 但不包括 border 水平滚动条 margin 的元素的高度 对于 inline 的元素这个属性一直是 0 单位 px 只读元素 offsetHeight 包括 padding border 水平滚动条 但不包括 margin 的元素的高度 对于 inline 的元素这个属性一直是 0 单位 px 只读元素 style height 返回元素的高度 包括元素高度 不包括内边距 边框和外边距 clientHeight 返回元素的高度 包括元素高度

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号