
如果是用JS,就用toFixed(2)用这个函数(四舍五入保留几位数)。
如果是jsp,就用 BigDecimal mData = new BigDecimal("9655")setScale(2, BigDecimalROUND_HALF_UP);这个和上面相同,四舍五入保留几位数。如果不想保留,直接将你的数值转换成字符串,然后通过indexOf()来获取到小数点所在的位置,最后截取字符串小数点后几位小数,根据你的需求做。
首先楼上那两位对于普通的使用场景来说基本是正确的。但是在一些需要精确结果的场景中(比如货币金额计算),double就会有问题了,比如:
(int)102399999999999999=1024;
再比如:
double n1=003;double n2=002;
double n3=n1-n2;
Systemoutprintln(n3);//0009999999999999998
所以如果需要精确安全的 *** 作的话,需要用到这个类:javamathBigDecimal
调用它的divideAndRemainder方法来进行计算,该计算可以理解为:进行一次保留余数的除法运算。结果会返回一个BigDecimal类型且长度为2的数组,0下标的元素是该计算的商,1下标的元素是该结果的余数。
BigDecimal n4=new BigDecimal("102399999999999999");BigDecimal [] result=n4divideAndRemainder(BigDecimalvalueOf(1));
Systemoutprintln(result[1]toString());//099999999999999
注意,构造BigDecimal对象的时候我使用的是字符串String类型的“102399999999999999
”,如果直接写102399999999999999的话会被认为是double类型的数,然后double类型的该值为10240,所以给字符串类型的值可以保证BigDecimal对象接收到的数就准确无误是我们心里想的数。
1、将BigDecimal转换成Int:
BigDecimala=newBigDecimal(1288);
intb=aintValue();
Systemoutprintln(b);//b=12;
2、C#中将decimal转int
try{
intnumber=DecimalToInt32(xxx);
}
catch(OverflowExceptione)
{
//decimal值超出int值范围
}
扩展资料
使用BigDecimal类来进行计算:
1、用float或者double变量构建BigDecimal对象。
2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
3、把BigDecimal对象转换成float,double,int等类型。可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象。
涉及到高精度计算的话,建议你用 javamathBigDecimal 类。Math计算会丢失精度,也不好把握。假如你要取数字00036的话,可以调用
Systemoutprintln(new BigDecimal(00035999999)setScale(4,2));//00036/
BigDecimal setScale(int newScale, int roundingMode)
返回一个 BigDecimal,其标度为指定值,其非标度值通过此 BigDecimal 的非标
度值乘以或除以十的适当次幂来确定,以维护其总值。
BigDecimal setScale(int newScale, RoundingMode roundingMode)
返回 BigDecimal,其标度为指定值,其非标度值通过此 BigDecimal 的非标度值
乘以或除以十的适当次幂来确定,以维护其总值。
/
BigDecimal方法里有好多的取舍模式,对照api选择保留数字模式就可以了。
以上就是关于jsp页面怎么截取值的位数全部的内容,包括:jsp页面怎么截取值的位数、java怎么取实数中的小数部分、怎么将BigDecimal转换成Int等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)