最近遇到一个坑,微信小程序中退款 19.9的字符串转double变成19.89,导致退不成功 。

坑死我了。现在把更改后的代码贴出来

public static void main(String[] args) {
Double total = Double.parseDouble("19.9");
Double total2 = Double.valueOf("19.9");
//可以看到19.9的字符串使用Double.valueOf转为double是没啥问题的
System.out.println("total======"+total);
System.out.println("tota2======"+total2);
String money = String.valueOf(total * 100);

BigDecimal money2 = BigDecimal.valueOf(total2);
// 将temp乘以100
money2 = money2.multiply(BigDecimal.valueOf(100));
System.out.println("money======"+money);//这是使用转换后的double做了类似乘100这样的算术运算 可以看到发生了精度损失。
System.out.println("money2======"+money2);//这个用BigDecimal没有损失精度
int money3 = money2.intValue();
System.out.println(money3);

}

如下:

String转double失去精度问题的更多相关文章

  1. double保持精度,防止小数点后数字的丢失的小方法

    一般情况下,输入带小数点的字面值,编译器会把它解析成double 类型. 例如:一个字面值被直接放到代码中,由于带小数点所以,默认值为double类型   输出结果是:1.12345678912345 ...

  2. fastjson 处理 double 的精度问题

    项目中使用 fastjson 来处理 json 格式,当前使用的版本为1.1.37.在和其它系统交互时,将一个json串传给了对方,原值为5.0,json 处理后格式为:{"dou" ...

  3. float,double等精度丢失问题 float,double内存表示

    问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s. ...

  4. CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作

    题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...

  5. float和double的精度

    作者: jillzhang 联系方式:jillzhang@126.com 原网址:http://blog.csdn.net/wuna66320/article/details/1691734 1 范围 ...

  6. Java中String转换Double类型 Java小数点后留两位

    Java中String转换Double类型 double num1 = 0.0; String qq = "19.987"; num1 = Double.valueOf(qq.to ...

  7. string和double之间的相互转换(C++)

    很多人都写过这个标题的文章,但本文要解决的是确保负数的string和double也可以进行转换. 代码如下: string转double double stringToDouble(string nu ...

  8. float与double的精度和范围

    1 范围 float和double的范围是由指数的位数来决定的. float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bi ...

  9. string与double的互相转换

    #include <iostream> #include <string> #include <sstream> string DoubleToString(dou ...

随机推荐

  1. JavaScript实现拖放效果

    JavaScript实现拖放效果 笔者实现该效果也是套用别人的轮子的.传送门 然后厚颜无耻的贴别人的readme~,笔者为了方便查阅就直接贴了,有不想移步的可以看这篇.不过还是最好请到原作者的GitH ...

  2. 纯C语言(C89)实现简单链表

    起因 工作很少接触纯C项目,业余写着玩玩,不断雕琢 目标 纯C实现简单链表,提供方便易用泛型接口,避免依赖 实现 完全封装,隐藏结构体细节,不支持栈创建 拷贝存储,轻微性能代价换来易用性 list.h ...

  3. string子串匹配(用string自带函数,不涉及char数组转换)

    using namespace std; #include <iostream> #include<string> //第1种,用string自带的s.subdtr()截取任意 ...

  4. 离线安装rpm包并解决依赖(升级vsftpd为例)

    背景  实际开发中,我们的linux服务器是处理离线状态的,并不能访问互联网.如果此时要在linux上安装或者升级软件,就只能通过rpm包的安装方式.rpm包安装有一个缺陷,就是不能处理安装包的依赖问 ...

  5. JS 高级程序设计3.5.1一元操作符 递增和递减操作符++ --

    var age =29 ++age; 在这个例子中,前置递增操作符把age的值变成了30.实际上,执行这个前置递增操作符与执行 一下操作的效果相同: var age=29; age =age+1;// ...

  6. PHP5.6.6上运行 ecshop 2.7.3常见问题处理

    ecshop在在PHP5.6.6版本以后,有了很多细微的变化.而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出. 整理一下我遇到的问题希望对你们能有些帮组也为了 ...

  7. mysql zip 安装

    第一步下载mysql.zip https://dev.mysql.com/downloads/mysql/5.7.html#downloads 第二步:解压文件后在其目录下, 新建   my.ini ...

  8. 查看filesystem type及ftype的值

    查看Filesystem type df -Th 查看ftype xfs_info [filesystem_name]  | grep ftype

  9. 虚拟基站(VRS)

      虚拟参考站技术(Virtual Reference Station,简称VRS)也称虚拟基准站技术,是一种网络实时动态测量实时动态测量(RTK)技术,通过在某一区域内建立构成网状覆盖的多个GPS基 ...

  10. RHCSA_DAY04

    软连接与硬连接 Linux中的链接文件类似于windows中的快捷方式 软连接特点:软连接可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用 软连接命令格式:ln -s 源文件路径  目标路 ...