最近在用财付通做分账,其中要将元转换为分,财付通的工具类中提供了一个方法:
/**
* 元转换成分 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中变量如何显示小数或浮点数?
TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_...
根据给定的信息,本文将详细解析“C小数转换分数的函数”的实现原理及过程。 ### 实现原理 #### 数学原理 此算法基于数学原理,即任何十进制数值都可以表示为分数形式,其中分子和分母均为整数。算法通过不断逼近...
项目中遇到小数相似度(业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数。 直接上代码。 var nval = 0.12345; var percent = (Math.round(nval*10000))/100+'%'; 说明: 1.Math.round(num)函数...
word+excel+ppt,使用技巧视频教程,解决你93.5%的办公应用需求
十进制小数转化为十六进制小数类 /// /// 十进制整数转化为十六进制(带小数) /// /// <param name="value"></param> /// <returns></returns> public string DecToHex(double value) { string result =...
文档《十进制小数和二进制小数相互转换》为初学者提供了一种理解转换过程的方法。由于转换涉及整数和小数部分,下面详细阐述每个部分的转换知识点。 一、十进制小数转换为二进制小数 1. 整数部分转换成二进制:...
C语言实现小数转分数,包括带循环节的小数
在数字信号处理领域,FPGA(Field-Programmable Gate Array)因其可编程性和高速运算能力,被广泛用于实现各种算法,其中包括小数分频。小数分频是数字频率合成中的关键步骤,它允许系统生成非整数倍的输入频率,这...
根据所提供的文件信息,文件名为“五年级数学上册三游三峡—小数除法3.4循环小数、有限小数、无限小数同步练习青岛版六三制.pdf”,这份文档的标题表明其为五年级数学上册的教学内容,具体到小数除法的特定章节,即...
"保留2位小数"是一个常见的需求,这通常用于显示货币、比例或者科学计算的结果。在这个场景下,我们主要会关注如何处理`double`类型的数据,将其转换为带有两位小数的字符串。 `double`类型的变量在Java中用来表示...
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...
小数时延滤波器是一种在数字信号处理领域广泛应用的技术,尤其在语音处理、测距定位等场景中具有重要作用。这种滤波器的设计允许我们实现非整数倍采样周期的时延,这对于精确控制信号的延迟时间至关重要。在MATLAB...
循环小数是数学中的一个重要概念,它涉及到小数的分类和性质。循环小数是指一个数的小数部分从某一位开始,一个或多个数字按一定顺序不断地重复出现。这种重复出现的模式使得循环小数成为无限小数的一种特殊形式。 ...
小数乘小数是小学数学中的一个重要概念,它在日常生活和工程计算中有着广泛的应用。在人教版的小数乘小数练习题中,学生可以通过一系列的习题来加深对这个知识点的理解和掌握。 首先,我们要理解小数乘法的基本规则...
1082:求小数的某一位 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 25539 通过数: 12352 【题目描述】 分数ab化为小数后,小数点后第n位的数字是多少? 【输入】 三个正整数a,b,n,相邻两个数之间用单个空格...
循环小数是数学中的一种特殊数字形式,它们在小数部分有一个或多个数字无限重复出现。这个概念在小学高年级和初中数学的学习中是非常重要的。循环小数可以分为纯循环小数和混循环小数。纯循环小数是指小数部分只有...
小数乘小数练习题.doc
分数转小数 代码
小数乘小数是小学数学中的一个重要概念,它在日常生活中有着广泛的应用,例如计算价格、测量距离等。本练习题旨在帮助学生巩固这一知识点,提高他们的计算能力。 1. 对于比较大小的问题,我们需要理解小数乘法的...