jsp 数据显示问题-JS中数据相加回显至JSP上精度问题

问题描述

JS中数据相加回显至JSP上精度问题
以下是显示的截图:

图中的数据相加是可以正常显示的,然后下面的两项在一起的时候,就出bug了。

其他的任意两项加都不会出现这种问题。
在Javabean中对数据采用的是BigDecimal的格式

javabean数据处理
public double getSubtotal() {
BigDecimal currPrice = new BigDecimal(book.getCurrPrice() + """");
BigDecimal count = new BigDecimal(quantity + """");
return currPrice.multiply(count).doubleValue();
}

在JS中对从JSP页面中抓取的数据作了先转化为text格式,然后Number(text),进行转换了。

js数据处理
function total(){
var total = 0;
$("":checkbox[name=checkboxBtn][checked=true]"").each(function(){
var id = $(this).val();
var text = $(""#"" + id + ""Subtotal"").text();
total += Number(text);
});
$(""#total"").text(total);
}

JSP页面显示:

?
${cartItem.subtotal }

完全找不到bug点在哪儿?

解决方案

这个问题我遇到过,属于JS浮点型数值运算的缺陷。给你一个方法。

function accAdd(arg1arg2){
var r1r2m;
try{r1=arg1.toString().split(""."")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(""."")[1].length}catch(e){r2=0}
m=Math.pow(10Math.max(r1r2));
return (arg1*m+arg2*m)/m;
}

解决方案二:
toFixed下,js有精度问题.

javascript浮点数运算精度问题

 $(""#total"").text(total.toFixed(2));
时间: 2024-08-04 13:41:33

jsp 数据显示问题-JS中数据相加回显至JSP上精度问题的相关文章

python 怎么实现一个excel表中,多个sheet中数据相加?

问题描述 python 怎么实现一个excel表中,多个sheet中数据相加? 把多个sheet中对应单元格中的数据相加,求大神帮忙,谢谢 我有一个excel,其中有多个单元格,现在需要把所有sheet中对应单元格的数据相加. 解决方案 你读取每个字段的数据,然后加法不就可以了. 或者直接yexcel自带的sum 解决方案二: import xlrd def readExcel(excelFile): sum = 0 book = xlrd.open_workbook(excelFile) fo

通过hibernet连接数据库,jsp怎么获得数据库中数据

问题描述 通过hibernet连接数据库,jsp怎么获得数据库中数据 刚开始接触strus,怎么通过action来实现,jsp界面获取数据库中的数据,连接方式是hibernet,最好是给个实例 解决方案 http://blog.csdn.net/tjcyjd/article/details/6845631http://blog.csdn.net/fengdongkun/article/details/8619545http://www.cnblogs.com/zsboy/p/4165365.ht

Android开发之完成登陆界面的数据保存回显操作实例_Android

本文实例讲述了Android开发之完成登陆界面的数据保存回显操作.分享给大家供大家参考,具体如下: LoginActivity.java: package com.example.login; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.Menu; import android.view

Android开发之完成登陆界面的数据保存回显操作实例

本文实例讲述了Android开发之完成登陆界面的数据保存回显操作.分享给大家供大家参考,具体如下: LoginActivity.java: package com.example.login; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.Menu; import android.view

在VB中制作不回显的文本框

在应用程序中,有时需要用户录入一些不宜在屏幕上直接显示的内容,如用户口令或机密数据.我们已熟知,在Foxbase/Foxpro中这一功能可以用SETCONSOLEOFF命令关闭向屏幕的回显来实现.那么,在 VisualBasicforWin-dows中如何做到这一点呢? 一个容易想到的方法是利用文本框的Key-Press事件,但为了处理用户对文字的编辑(如删除.插入) ,则还要再用其它变量存放真正输入的内容,而且必须书写大量复杂的控制程序.实践证明,这种方法 比较繁琐,不便使用. 笔者在用VB编

关于JS中数字相加出现的问题。

问题描述 今天在无意中发现这个问题. 如:Number(4.2)+Number(9.2) 这两个值相加alert出来等于13.399999999999998,为什么? 如:Number(2.2)+Number(9.7) alert出来等于11.899999999999998 但是 像这样的 Number(2.3)+Number(9.9) alert出来等于12.2 . 这个值是我想要的. 为什么有的数值加起来会出现那么多的小数位呢,有的加起来又没有呢??? 解决方案 <html><hea

如何在html中遍历回显已经取出的数据?

问题描述 如何在html中遍历回显已经取出的数据? 这是html代码,都是用的标签 这是js代码,数据已经取到,能完成部分的数据回显 这是效果 我现在的需求是,我查出的数据全部回显到页面上,我该如何循环遍历这个html标签才能达到这样的效果?求大神帮忙 解决方案 根据拿到的数据动态生成整个页面或者在每个表签上添加一个id,返回son的时候也带上这个id作为一个属性,到时候根据id获取标签再赋值. ps:[{txt:"h2内容",id:"001"},{id:"

sql中循环处理当前行数据和上一行数据相加减_MsSql

以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单. --drop table #temptable create table #temptable ( argument1 int, argument2 int, argument3 datetime ) declare @rowcount int,@argument1 int,@argument2 nvarchar(50),@argument3

sql中循环处理当前行数据和上一行数据相加减

以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单. --drop table #temptable create table #temptable ( argument1 int, argument2 int, argument3 datetime ) declare @rowcount int,@argument1 int,@argument2 nvarchar(50),@argument3