这几天我编写了购物车,在数值计算上面出现了一些问题
第一个问题:
从后台传递过来的数值类型是double类型的数值,小数点后面出现了10位以上。例如 1476.6000000006
第二个问题:
从后台传递过来的数值,变成了科学计数法,java的double类型的数值存储的时候是科学计数法。 例如4.78732E5
第三个问题:
计算出来大于1000的数值,会出现西方的数值辅助符号 例如12,1233.00
第四个问题:
页面上的两个数值进行加减,显示的数值小数点后面出现多为。和第一个问题类似
第一个问题,我简单的查找了一下,好像HTML有时候对double类型的数值没有很好的支持,有时候会出现位数的溢出。这个时候我们需要在后台做处理
将这些数值转换成String类型的数值,传递到前台。这个时候一个字符串页面就不会有其他的问题。
第二个问题,如果直接在后台使用DOUBLE类型的数值的.toString方法,那个时候还是会出现科学计数法。所以这个时候需要我们在后台把这个数值进行
一个处理,可以使用DecimalFormat这个类来处理。
第三个问题,在转换和页面显示的时候,有时候会出现西方辅助符号(╮(╯▽╰)╭哎!!谁叫代码是西方人先弄出来的),这个时候我们一般在页面上
做处理,使用js的replace(",","")这个方法。
第四个问题,这个js和html对double真的支持不是特别好,需要我们做一个处理,可以使用toFixed(2)方法。
总的来说后台可以使用
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");//格式化设置
return decimalFormat.format(double1);
这样的一个工具
前台页面可以看看这个例子
parseFloat($("#totalPrice").html().replace(",","")).toFixed(2)
数值的计算使用parseFloat这个方法来进行转换。