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


相关推荐

  • css修饰边框为虚线,css如何设置虚线边框css虚线样式?css设置虚线边框的方法示例…

    css修饰边框为虚线,css如何设置虚线边框css虚线样式?css设置虚线边框的方法示例…首页 gt web 前端 gt css 教程 gt 正文 css 如何设置虚线边框 css 设置虚线边框的方法示例原创 2018 10 在网页布局中 有时候为了整体网页的美观可能需要设置虚线边框 那么虚线边框怎么设置呢 本篇文章就来给大家介绍一下如何使用 css 来设置虚线边框 首先我们应该知道 css 的为边框属性 可以实现对象边框的效果 像是设置边框宽度 边框颜色 边框样式 实线还是虚线 等 下面我们就来具体看看

    2026年3月18日
    2
  • HTML+CSS 简单的顶部导航栏菜单制作

    HTML+CSS 简单的顶部导航栏菜单制作导航栏的制作:技术要求:CSSHTML各类标签实现目的:导航栏菜单代码分析:基本样式清除无序列原点删除下划线删除文字默认居中a标签设置块级元素伪类选择器对a状态修饰分步实现:分三栏布局:使用浮动logo一栏;选择框一栏;搜索框一栏logo部分:…

    2022年5月27日
    215
  • 3大场景解锁!通义千问的企业级高效部署与性能优化实践指南

    3大场景解锁!通义千问的企业级高效部署与性能优化实践指南

    2026年3月17日
    2
  • box-sizing:border-box的理解和作用

    box-sizing:border-box的理解和作用要想清楚这个属性的作用,首先要理解盒子模型盒子模型是指:外边距(margin)+border(边框)+内边距(padding)+content(内容)可以把每一个容器,比如div,都看做是一个盒子模型比如你给一个div设置宽高为500px,但实际你设置的只是content,之后你又设置了padding:10px;border:1pxsolidred;这时div的宽高就会变为544px(content500px+padding40px+border4px)相当于一个元素的实际宽高是由

    2025年7月17日
    7
  • pycharm激活码key is invalid[最新免费获取]2022.03.04

    (pycharm激活码key is invalid)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40ZKSWCX8G-eyJsaWN…

    2022年4月2日
    330
  • 传智健康day06 移动端开发-体检预约

    传智健康day06 移动端开发-体检预约1.移动端开发1.1移动端开发方式随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地。例如,我们可以使用手机购物、支付、打车、玩游戏、订酒店、购票等,以前只能通过PC端完成的事情,现在通过手机都能够实现,而且更加方便,而这些都需要移动端开发进行支持,那如何进行移动端开发呢?移动端开发主要有三种方式:1、基于手机API开发(原生APP)2、基于手机浏览器开发(移动web)3、混合开发(混合APP)1.1.1基于手机API开发手机端使用手

    2022年6月24日
    42

发表回复

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

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