javascript自动计算金额(计算结果只显示小数点后的两位)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript自动计算金额(计算结果只显示小数点后的两位)相关的知识,希望对你有一定的参考价值。

<script language="javascript">
window.onload=function()
var amount=document.getElementsByName("amount");
var price=document.getElementsByName("price");
var sum=document.getElementsByName("sum");
for(var i =0;i<amount.length;i++)

sum[i].value=amount[i].value*price[i].value;


</script>
<input name="amount" type="text" id="amount" value="1">*<input name="price" type="text" id="price" value="2">
=<input type="text" name="sum" id="sum"><br>
<input name="amount" type="text" id="amount" value="3">*<input name="price" type="text" id="price" value="4">
=<input type="text" name="sum" id="sum"><br>
<input name="amount" type="text" id="amount" value="5">*<input name="price" type="text" id="price" value="6">=
<input type="text" name="sum" id="sum"><br>
帮我补充后,计算结果只显示小数点后的两位 谢谢啦!

JS保留两位小数

对于一些小数点后有多位的浮点数,我们可能只需要保留2位,但js没有提供这样直接的函数,所以我们得自己写函数实现这个功能,代码如下:

function changeTwoDecimal(x)

var f_x = parseFloat(x);
if (isNaN(f_x))

alert('function:changeTwoDecimal->parameter error');
return false;

var f_x = Math.round(x*100)/100;

return f_x;


功能:将浮点数四舍五入,取小数点后2位

用法:changeTwoDecimal(3.1415926) 返回 3.14

changeTwoDecimal(3.1475926) 返回 3.15

js保留2位小数(强制)

对于小数点位数大于2位的,用上面的函数没问题,但是如果小于2位的,比如:

changeTwoDecimal(3.1),将返回 3.1,如果你一定需要3.10这样的格式,那么需要下面的这个函数:

function changeTwoDecimal_f(x)

var f_x = parseFloat(x);
if (isNaN(f_x))

alert('function:changeTwoDecimal->parameter error');
return false;

var f_x = Math.round(x*100)/100;
var s_x = f_x.toString();
var pos_decimal = s_x.indexOf('.');
if (pos_decimal < 0)

pos_decimal = s_x.length;
s_x += '.';

while (s_x.length <= pos_decimal + 2)

s_x += '0';

return s_x;


功能:将浮点数四舍五入,取小数点后2位,如果不足2位则补0,这个函数返回的是字符串的格式

用法:changeTwoDecimal(3.1415926) 返回 3.14

changeTwoDecimal(3.1) 返回 3.10

http://apps.hi.baidu.com/share/detail/51532148追问

我不知道怎么把浮点数四舍五入功能加到上面的JS里面的,所有才求助的哦,麻烦你辛苦下,帮我加下

参考技术A parseFloat(price).toFixed(2)
这样就是保留小数点后2位,自动四舍五入。追问

是加到哪个位置呢?对JS不熟悉,麻烦你了

追答

for(var i =0;i<amount.length;i++)

sum[i].value=parseFloat(amount[i].value*price[i].value).toFixed(2);

追问

可以了,谢谢

本回答被提问者采纳

在MS Access中,当查询结果为空时,是否有一个简单的方法来显示0.00美元的金额?

在我的MS Access报表中,如果从查询中返回的一个金额(如数量)为空,因为查询表为空,计算的货币字段就会显示#Type!或#Error!。 有没有一种简单的方法来显示打印这些字段的$0.00?

我在本站和其他资料上调查了许多替代方法,并尝试了Nz(数量,0)、IIf(([数量])为空、0、([数量]*[单位成本])等各种组合,都没有好的结果。

答案

你的yesno问题的直接答案是 "No"。我知道的选项只有

1)如果没有数据,就不要打开报表。

一种方法是使用OnNoData事件

Private Sub Report_NoData(Cancel As Integer)
MsgBox "There is no data, report opening is cancelled."
Cancel = True
End Sub

但是,为了处理错误2501,需要在打开报告的过程中进行错误处理--复查。访问。取消生成报告导致错误2501

另一种方法是,如果没有数据,甚至不打开报表--在作为报表RecordSource的表或查询对象上进行DCount或DLookup(使用应用于报表的相同的过滤条件),并根据返回的值使用If Then条件。

2) 在查询中进行计算,而不是在报表上使用文本框,当没有数据时,在报表上显示 "无数据可用 "的消息。

  • VBA在报表详情部分的OnFormat事件中动态隐藏标签控件,例如。Me.lblND.Visible = Not Me.HasData (请注意,该事件仅在PrintPreview或直接打印时触发)
  • 或文本框中的表达式。=IIf([HasData], " ", "No data available") 而且不需要VBA。

3) UNION一个0值的虚拟记录--如果报表有数据,可能会抑制该记录的显示--我从来没有试过。

以上是关于javascript自动计算金额(计算结果只显示小数点后的两位)的主要内容,如果未能解决你的问题,请参考以下文章

在EXCELL表格中复制金额是为啥会出现#VALUE!

js浮点数计算问题 + 金额大写转换

一个超简单的vue商品计算总金额

在MS Access中,当查询结果为空时,是否有一个简单的方法来显示0.00美元的金额?

前端 JavaScript 实现一个简易计算器

Javascript扩展String.prototype实现格式金额格式时间字符串连接计算长度是否包含日期计算等功能