自动计算数量*单价问题。

hai13 2005-01-18 08:13:15
如下这么一段代码。书上说是因为javascript是用64位的浮点数值来表示浮点数。
所以比如
num1=1.15
num2=3
的话,那么得到的值是:3.4499999999999997

那我应该如何让这个值像计算器上算出来的一样精确?


<script>

function jishuan()
{
num1=document.form1.danjia.value
num2=document.form1.shuliang.value
document.form1.jine.value = num1*num2
}
</script>


<a href="javascript:" onclick=jishuan()>自动计算</a>
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crycoming 2005-01-20
  • 打赏
  • 举报
回复
<script>
//#######################
// 数字格式化函数
// 用法:本函数用来格式化数字。
// 参数:num(数值型):要进行格式化的数值型变量;
// decimalNum(整型) :要保留的小数位数;
// bolLeadingZero (布尔型:true或 false):对-1<num<1之间的数是否要添加前导数字0;
// bolParens (布尔型:true或 false):在负号后是否使用小括号;
// bolCommas (布尔型:true或 false):是否用“,”隔开数字位。
// 返回值:经过格式化的数字字符串。
//#######################
// 下面是例子:
alert(FormatNumber(534520.54354644654,5,false,false,true))

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
{
if (isNaN(parseInt(num))) return "NaN";

var tmpNum = num;
var iSign = num < 0 ? -1 : 1; // 得到数字符号

// 调整小数点位数到给定的数字。
tmpNum *= Math.pow(10,decimalNum);
tmpNum = Math.round(Math.abs(tmpNum))
tmpNum /= Math.pow(10,decimalNum);
tmpNum *= iSign; // 重新调整符号
var tmpNumStr = new String(tmpNum);

// 处理是否有前导0
if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
if (num > 0)
tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
else
tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);

//处理是否有逗号
if (bolCommas && (num >= 1000 || num <= -1000)) {
var iStart = tmpNumStr.indexOf(".");
if (iStart < 0)
iStart = tmpNumStr.length;

iStart -= 3;
while (iStart >= 1) {
tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
iStart -= 3;
}
}

// 处理是否有括号
if (bolParens && num < 0)
tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

return tmpNumStr; // 返回格式化后字符串
}
</script>

seeu1688 2005-01-20
  • 打赏
  • 举报
回复
mark first
hai13 2005-01-19
  • 打赏
  • 举报
回复
谁来帮帮我啊?
hai13 2005-01-19
  • 打赏
  • 举报
回复
parseint之后有小数的都变成整数了。所以得到的结果不对啊?

有没有其它的办法啊?
xeimm 2005-01-19
  • 打赏
  • 举报
回复
需要把表单获得数据转成数字


parseInt(document.formrenyuan.x3.value)

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧