本月博客排行
-
第1名
Xeden -
第2名
fantaxy025025 -
第3名
bosschen - paulwong
- johnsmith9th
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - gengyun12
- wy_19921005
- vipbooks
- e_e
- benladeng5225
- wallimn
- ranbuijj
- javashop
- jickcai
- fantaxy025025
- zw7534313
- qepwqnp
- robotmen
- 解宜然
- ssydxa219
- sam123456gz
- zysnba
- sichunli_030
- tanling8334
- arpenker
- gaojingsong
- xpenxpen
- kaizi1992
- wiseboyloves
- jh108020
- xyuma
- ganxueyun
- wangchen.ily
- xiangjie88
- Jameslyy
- luxurioust
- mengjichen
- lemonhandsome
- jbosscn
- nychen2000
- zxq_2017
- lzyfn123
- wjianwei666
- forestqqqq
- ajinn
- siemens800
- hanbaohong
- 狂盗一枝梅
- java-007
- zhanjia
- 喧嚣求静
- Xeden
最新文章列表
解决Java计算浮点数精度问题(BigDecimal)
工具类如下:
package com.yusj.web.utils;
import java.math.BigDecimal;
/**
*
* @ClassName: ArithUtils
* @Description: 数学计算工具类
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
* @ ...
转(JS中浮点运算精度错误BUG解决方案)
JS中的浮点运算有时会出现精度错误的BUG,比如:0.1 + 0.2 = 0.30000000000000004
解决方案如下:
// 除法
function accDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
try { t1 = arg1.toString().split(".")[1].length ...
java中float和double的问题
很多朋友都知道java中直接用float和double运算会有精度的问题,其本质的原因是计算机只认识二进制数,直接用二进制来表示带有小数的十进制,本来就是无法做到精确地,比如0.1转换成二进制位为:
0.1(十进制) = 0.0001100110011001100......(二进制)
所以在java中进行商业逻辑运算,还是要用BigDecimal,具体用 ...
BigDecimal构造参数Double和String的区别
在处理长度,价格等数据时,我们总会用到BigDecimal。BigDecimal有很多的好处,但是我们在调用其构造函数的时候,也要选好参数,否则可能会得出错误的结果。
BigDecimal的构造方法常用的可以传double和String作为参数,平常如果不注意的话,会以为传个0.1d和”0.1”进去,得到的结果是一样的。但事实上,结果却出乎意料。我们可以做个简单的测试:
public ...
BigDecimal.setScale 处理java小数点
BigDecimal.setScale()方法用于格式化小数点
setScale(1)表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_H ...
java
涉及到金额的计算时,相信很多人都会遇到比较头疼的精度问题。因为计算机的数字表示只是差强人意,比如67.89,计算机可能认为是67.900000000001,这就给最终的运算带来误差。 碰到这样的问题,有2种方法,一是使用更大精度的差值来屏蔽,二则是通过Bigdecimal这个对象来计算。 对于第一种,只能在某些判断条件下使用,如: Math.abs(data1-data2)>0.001 即可。 ...
BigDecimal的精度问题
String myMoney = "100.0128";
BigDecimal money= new BigDecimal(myMoney);
//设置精度,以及舍入规则
money= money.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(money);
//100.01 ...
LightOJ 1282 - Leading and Trailing
题意:求n^k的前三位和后三位。2<=n<2^31,1<=k<=10^7分析:
后三位。求后三位比较简单,直接二分幂对1000求余即可。
前三位。对于给出的数据来说,不可能直接求,因此可以保留一定的位数以确保精度足够。此题应保留 3+lg(k) 位。然而,对于题给 k 的最大情况,要保留 10 位,如果用64位整数来存的话,中间过程肯定会溢出。想到 double ...
关于JavaScript的数值
一、无穷
在JavaScript中,当数值远远大于其能表示的最大值(1.7976931348623157e+308)时,就会表示成Infinity / -Infinity(正无穷/负无穷),此外,在JavaScript中除数为0的结果并不会报错,其结果也会是Infinity。另外,在JavaScript中0有+0(通常的0)和-0(负0)之分,虽然他们在值上都是0。
var max ...