`
leon0122
  • 浏览: 45445 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

我的小数哪里去了?

 
阅读更多
最近在用财付通做分账,其中要将元转换为分,财付通的工具类中提供了一个方法:

 /**
  * 元转换成分 1元==100分
  * 对于0.011元转换成为1分,小数点后面第3位以后的(包含第三位)将舍弃.
  * @param money
  * @return long
  */
 public static long yuan2Fen(double money) {  
  String strFen = (money *  Double.valueOf(100)) + "";

  return Long.parseLong(strFen.substring(0,strFen.indexOf(".")));

 }
 



系统上线一段时间支付都没问题,但是今天突然有一笔订单提示分账金额不对,我就奇怪了,用了将近1个月,业务也没改过,怎么会有问题呢?经过断点跟踪,发现只要将数据1077.1传递进去,最后结果就会默默的变成107709。继续跟踪方法,结果出来了:1077.1*100之后的结果就变成 107709.99999999999。

百思不得其解,问财付通的技术员,他们也无法解释。最后没办法,只好自己改了:
  public static long yuan2Fen(double money) { 
  BigDecimal   b1   =   new   BigDecimal(Double.toString(money));   
  BigDecimal   b2   =   new   BigDecimal(Double.toString(100));    
  String strFen =  b1.subtract(b2).doubleValue()+ "";

  return Long.parseLong(strFen.substring(0,strFen.indexOf(".")));

 }


这样就OK了,如果有谁知道 为什么double类型的1077.1乘以100会变成107709.99999999999 请告知哈。。
分享到:
评论

相关推荐

    STEP7 Wincc中变量如何显示小数或浮点数?.docx

    STEP7 Wincc中变量如何显示小数或浮点数?

    TRUNC_保留小数位

    TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_...

    C小数转换分数的函数

    根据给定的信息,本文将详细解析“C小数转换分数的函数”的实现原理及过程。 ### 实现原理 #### 数学原理 此算法基于数学原理,即任何十进制数值都可以表示为分数形式,其中分子和分母均为整数。算法通过不断逼近...

    javascript 【小数转百分数 保留两位小数】

    项目中遇到小数相似度(业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数。 直接上代码。 var nval = 0.12345; var percent = (Math.round(nval*10000))/100+'%'; 说明: 1.Math.round(num)函数...

    23-39Excel如何对小数向上取整?.avi

    word+excel+ppt,使用技巧视频教程,解决你93.5%的办公应用需求

    十进制小数转化为十六进制小数

    十进制小数转化为十六进制小数类 /// /// 十进制整数转化为十六进制(带小数) /// /// <param name="value"></param> /// <returns></returns> public string DecToHex(double value) { string result =...

    十进制小数和二进制小数相互转换(C++版)

    文档《十进制小数和二进制小数相互转换》为初学者提供了一种理解转换过程的方法。由于转换涉及整数和小数部分,下面详细阐述每个部分的转换知识点。 一、十进制小数转换为二进制小数 1. 整数部分转换成二进制:...

    C语言实现小数转分数(包括带循环节小数)

    C语言实现小数转分数,包括带循环节的小数

    FPGA小数分频实现

    在数字信号处理领域,FPGA(Field-Programmable Gate Array)因其可编程性和高速运算能力,被广泛用于实现各种算法,其中包括小数分频。小数分频是数字频率合成中的关键步骤,它允许系统生成非整数倍的输入频率,这...

    五年级数学上册三游三峡—小数除法3.4循环小数、有限小数、无限小数同步练习青岛版六三制.pdf

    根据所提供的文件信息,文件名为“五年级数学上册三游三峡—小数除法3.4循环小数、有限小数、无限小数同步练习青岛版六三制.pdf”,这份文档的标题表明其为五年级数学上册的教学内容,具体到小数除法的特定章节,即...

    保留2位小数

    "保留2位小数"是一个常见的需求,这通常用于显示货币、比例或者科学计算的结果。在这个场景下,我们主要会关注如何处理`double`类型的数据,将其转换为带有两位小数的字符串。 `double`类型的变量在Java中用来表示...

    小数时延滤波器matlab程序

    小数时延滤波器是一种在数字信号处理领域广泛应用的技术,尤其在语音处理、测距定位等场景中具有重要作用。这种滤波器的设计允许我们实现非整数倍采样周期的时延,这对于精确控制信号的延迟时间至关重要。在MATLAB...

    详解Java判断是否是整数,小数或实数的正则表达式

    在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...

    循环小数课件.ppt

    循环小数是数学中的一个重要概念,它涉及到小数的分类和性质。循环小数是指一个数的小数部分从某一位开始,一个或多个数字按一定顺序不断地重复出现。这种重复出现的模式使得循环小数成为无限小数的一种特殊形式。 ...

    小数乘小数练习题及答案人教版精选.doc

    小数乘小数是小学数学中的一个重要概念,它在日常生活和工程计算中有着广泛的应用。在人教版的小数乘小数练习题中,学生可以通过一系列的习题来加深对这个知识点的理解和掌握。 首先,我们要理解小数乘法的基本规则...

    1082 求小数的某一位.cpp

    1082:求小数的某一位 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 25539 通过数: 12352 【题目描述】 分数ab化为小数后,小数点后第n位的数字是多少? 【输入】 三个正整数a,b,n,相邻两个数之间用单个空格...

    循环小数练习题及答案北师大版精选.doc

    循环小数是数学中的一种特殊数字形式,它们在小数部分有一个或多个数字无限重复出现。这个概念在小学高年级和初中数学的学习中是非常重要的。循环小数可以分为纯循环小数和混循环小数。纯循环小数是指小数部分只有...

    小数乘小数练习题.doc

    小数乘小数练习题.doc

    分数转小数 代码

    分数转小数 代码

    小数乘小数2练习题及答案精选.doc

    小数乘小数是小学数学中的一个重要概念,它在日常生活中有着广泛的应用,例如计算价格、测量距离等。本练习题旨在帮助学生巩固这一知识点,提高他们的计算能力。 1. 对于比较大小的问题,我们需要理解小数乘法的...

Global site tag (gtag.js) - Google Analytics