public static Double format(double data,int scope){ //10的位数次方 如保留2位则 tempDouble=100 double tempDouble=Math.pow(10, scope);//原始数据先乘tempDouble再转成整型,作用是去小数点 data=data*tempDouble;int tempInt=(int) data;//返回去小数之后再除tempDouble的结果 return tempI...
实际上只要我们金融系统只是用两位小数,当产生超过两位小数时,后面的小数位都不要了,直接不要,而不是满五进一,如果进一,就造成多给用户钱了,哪怕是多给0.001元,这在整个系统中的损失也是巨大的,所以当出现两位以上的小数时,只能直接省去后面的小数位,哪怕是0.239也要省去0.009,这个0.009元的损失只能让用户承担。
import java.text.NumberFormat;public class TestNumberFormat { public static void main(String[] args) { NumberFormat nf = NumberFormat.getInstance();nf.setMaximumFractionDigits(2);double var = 8.88888;System.out.println(nf.format(var));} } ...
并不是只保留两位小数。 只是面向用户只展示了两位小数,比如你的余额是 12032.12,在银行系统里的真实值可能是 12032.12593... 保留有效的小数位数由系统所需的精度要求来决定。 有用2 回复 focusar 131 发布于 2017-09-14 在系统后台,对数据的记录尽可能精确,保存多位小数,用于相关计算和保存;显示给用户的时候...