- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有自动将输入字段加在一起的 javascript 函数,但是添加像 1.35 + 1.35 + 1.35 这样的数字会得到 4.050000000000001 的输出,这只是一个例子。如何将总数四舍五入到小数点后第二位而不是那个长字符串?
输入字段将不仅仅是 1.35 示例,因此我需要总计在小数点后永远不会超过 2 点。这是完整的工作代码:
<html>
<head>
<script type="text/javascript">
function Calc(className){
var elements = document.getElementsByClassName(className);
var total = 0;
for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value);
}
document.form0.total.value = total;
}
function addone(field) {
field.value = Number(field.value) + 1;
Calc('add');
}
</script>
</head>
<body>
<form name="form0" id="form0">
1: <input type="text" name="box1" id="box1" class="add" value="0" onKeyUp="Calc('add')" onChange="updatesum()" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box1);">
<br />
2: <input type="text" name="box2" id="box2" class="add" value="0" onKeyUp="Calc('add')" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box2);">
<br />
<br />
Total: <input readonly style="border:0px; font-size:14; color:red;" id="total" name="total">
<br />
</form>
</body></html>
一些我已经尝试过的东西,它们应该可以工作,但我显然没有正确地实现它们:
for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value.toString().match(/^\d+(?:\.\d{0,2})?/));
var str = total.toFixed(2);
或
for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value * 100) / 100).toFixed(2)
Math.floor
也没有运气
最佳答案
使用toFixed()
使用传统的舍入方法将num
舍入为2 个小数位。它将 4.050000000000001 舍入为 4.05。
num.toFixed(2);
您可能更喜欢使用 toPrecision()
,它将去除任何结果尾随零。
Example :
1.35+1.35+1.35 => 4.050000000000001
(1.35+1.35+1.35).toFixed(2) => 4.05
(1.35+1.35+1.35).toPrecision(3) => 4.05
// or...
(1.35+1.35+1.35).toFixed(4) => 4.0500
(1.35+1.35+1.35).toPrecision(4) => 4.05
关于javascript - parseFloat 舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640404/
Number.parseFloat() 和 parseFloat() 有什么区别?一个比另一个好吗? 最佳答案 它们的功能完全相同。他们不仅行为相同。它们是完全相同的函数对象。 为了扩展这一点,Num
我很抱歉,但我需要帮助:( 我尝试将字符串转换为十进制并且它有效,但我有一些问题: number = document.getElementById("totalcost").innerHTM
如何在名为 parseFloat 的 Angular 工厂函数内访问 parseFloat? angular .module('myApp') .factory('mathServic
我从客户的内部 API 获取了一个庞大的数据集。它将包含一堆价格的数字数据,例如:31.23 美元。他把它们作为 {"spend":"21.23"} 给了我,这很好,但我担心在 1000 多个项目并在
这个问题已经有答案了: How to round to at most 2 decimal places, if necessary (91 个回答) 已关闭 7 年前。 我已经阅读了一些示例,了解如
我有一个使用 .toLocaleString() 格式化的输入字段。 然后我需要对该值使用 parseFloat() 将其转换为数字。 要在美国语言环境中执行此操作,我只需在执行 parseFloat
我有以下情况,我正在使用jquery,我需要总结表单上的一些字段。我在小计字段和总计字段中发现了 NaN 错误。我已尽一切可能避免此类错误,我只需要此字段上的 SUM 。我的表单中的所有内容都工作正常
我有一个类别页面,其中显示不同的产品。在每个产品中,我都有一个部分显示原价、保存价格 和新价格。只是为了说明原价的结构: Was £
我有一个文本框,我需要将一个 float 值传递给 api。 现在当我在文本框中输入值“18.575”或“18.09483”时一切正常。 但如果值为“18.000”,则无法正常工作。我知道 18.00
好的,所以我的代码工作正常,但是当为 #chance 输入一个小数,即 60.1、60.2、60.3 等时,它会搞砸利润和支付。 例如:60%为机会输入,1为赌注。它返回 1.65 的工资和 0.65
我正在使用 jQuery 从网页中提取一些数据,它作为一个数组返回,其中包含我尝试添加的以下值 (.5、.25、1.25、3.75)。这是我的代码片段: var th = 0; for (th
我正在学习 Javascript。 在 javascript 中有 parseFloat 和 parseInt 函数是什么意思,事实上,Javascript 不区分 float 和整数——只有数字数据
我正在尝试解析数组中的值,然后将它们添加到图表中。问题是我在输出中得到了一些意想不到的数字。我遍历并填充我的数组。在按钮上单击我循环遍历并解析数据并将其放入另一个数组以传递给图表系列。这在理论上可行,
这个问题在这里已经有了答案: Is floating point math broken? (31 个答案) 关闭 9 年前。 我正在尝试将“9999999999999099”转换为 javascr
我正在从事一个需要“提示框”计算系统的项目。正如您在代码片段中看到的那样,它没有像我预期的那样工作。我该如何解决这个问题? $("select[name='tip']").on('change',fu
我需要验证文本框条目。它应该只允许整数,因为如果用户在绑定(bind)期间在此字段中输入字符,entityframework 将失败。 这里是问题: 当用户在此字段中输入 10-d 时,parseFl
在我的代码中,我有这个: function addNumbers() { var collect = parseFloat(document.getElementBy
我确信这与我对行为的理解有关,而不是 parseFloat 方面的任何不一致操作,但请耐心等待... 如果我输入格式为“IDCODE: (3.5)” 其中IDCODE可能是几个不同的预定义字符串,并且
我在 HTML 表单中有一些输入,使用 javascript 在更改时自动填充输入 问题是下面的代码显示了小数,更长的小数像这样 42880.34623465464356435634 代码是: the
我在转换输入数字时遇到问题,当插入 1,050000 时,它给我的结果不是 1.050000,而是 1.000000。 parseFloat("1,050000").toFixed(6).toStri
我是一名优秀的程序员,十分优秀!