parseFloat 舍入

2024-04-07

我有一个 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);

or

for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value * 100) / 100).toFixed(2)

也没有运气Math.floor


Use toFixed()舍入num使用传统的四舍五入方法保留至小数点后两位。它将 4.050000000000001 舍入为 4.05。

num.toFixed(2);

您可能更喜欢使用toPrecision(),这将去除所有产生的尾随零。

Example http://ideone.com/i8cjG:

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 数字格式 - 小数精度 http://www.mredkj.com/javascript/nfbasic2.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

parseFloat 舍入 的相关文章

随机推荐

  • 如何使用 WorkManager 安排通知?

    我想在每次用户在数据库中添加特定时间的注释时安排通知 虽然使用 AlarmManager BroadcastReceiver 等有多种方法可以做到这一点 但如何使用 WorkManager 来完成呢 WorkManager不适合需要在特定时
  • Bootstrap 3.0 和 Google 地图 javascript API V3 样式

    我正在尝试将谷歌地图 javascript API v3 实现到利用 Bootstrap 3 0 轮播 基本主题的 Bootstrap 3 0 网站中 问题是 div div 如果我尝试将其包含在任何其他 div 或 bootstrap 3
  • 如何使用 RTTI 区分 TDateTime 属性和 Double 属性?

    使用Delphi 2010中的RTTI系统 有什么方法可以找出属性是否是TDateTime 目前 每当我回调 asVariant 以及检查属性类型时 它都会将其视为双精度 这是因为它只能看到基本类型吗 TDateTime 双精度 尝试检查N
  • 如何正确使用AddBatch/withBatch将xml标签值批量插入数据库表

    innerXml 是一个带有大量 xml 标签的 xml 文件 我正在尝试获取标签值并将它们转储到数据库表中 我已经尝试过下面的代码 它工作正常 innerXml Row each Row gt sql execute INSERT INT
  • adb 已停止在 android studio 中工作

    我正在尝试在 android studio 中构建我的第一个应用程序并收到错误 adb exe 已停止工作 我正在Windows xp 32位系统上工作 Have tried several solutions available onli
  • 如何更新 JRuby 的 gem 命令?

    我们如何更新 JRuby 使用的 gem 版本 JRuby 使用 gem 1 5 1 我们希望将其升级到 1 8 7 我们希望将 gems 安装在 Ruby gems 中 We run bin jruby gem install rubyg
  • NuGet:远程服务器返回错误(403)禁止

    每当我尝试安装软件包时 我都会收到此错误 remote server returned an Error 403 Forbidden 我可以使用其他命令 例如 get package ListAvailable 并发现已安装的软件包是否有任
  • 在部署之前使用 local :path 检查 gems

    对于某些 Rails 应用程序 我希望在部署时有一个安全防护措施 以检查是否有一些 gem 配置为在本地路径中查找 一些上下文可能有助于理解 当我处于开发模式时 我希望在 本地模式 下有一个 gem 在我的Gemfile它的配置如下 gem
  • Node fs 复制文件夹

    我正在尝试使用 Node 复制文件夹fs模块 我熟悉readFileSync and writeFileSync 方法 但我想知道应该使用什么方法来复制指定的文件夹 您可以使用fs extra https www npmjs com pac
  • 无法读取文本框值

    我在 AjaxFileUpload1 的 pageupload 事件期间将页面上的文本框的值分配给变量 问题是 即使没有错误抛出 我也没有从文本框获取值到我的变量 我的变量是 string scn txtSCN Text string li
  • CodeIgniter 验证变量/输入不是来自表单?

    假设我有用户生成的数据 这些数据不是通过表单发布的 有没有办法可以使用 扩展 CodeIgnitors form validation 类来验证该数据 eg 是的 您可以通过set data
  • 将一个整数平均分为 X 部分

    我正在 PHP 中寻找一种有效的方法来将数字等分 数字始终是整数 没有浮点数 假设我有一个数组 hours 其值从 1 到 24 hours 1 等 和一个包含整数的变量 int 我想要实现的是将 int 的值平均分为 24 个部分 这样我
  • 标签中的 Ember 车把模板

    ember 特别是应用程序模板 是否可以在 head 标签内进行操作 以便动态更改标题标签 元标签 外部 css 样式表和 favicon 等内容 如果是这样 那么一种干净的方法是什么 为了完成这项工作 我所做的是创建车把助手 例如 如果您
  • 保存用户个人资料详细信息 Android 应用程序的最佳方式

    我正在创建一个有多个用户的应用程序 我创建了一个对象 用户 其中包含更多详细信息 姓名 年龄 自定义对象等 因为我有一个自定义对象 所以我知道使用共享首选项会很困难 存储用户数据的最佳方式是什么 我研究过 SQLite 但找不到将自定义对象
  • 有没有办法从应用程序脚本中的 graphql API 获取数据?

    我正在尝试通过应用程序脚本从 graphql API 获取数据 使用 POST 获取 graphql 数据有一个问题 提供从 GraphQL API 获取的查询字符串 https stackoverflow com questions 47
  • C++ 模板复制构造函数,编译器说“传递 const 作为此参数丢弃限定符”

    我正在尝试创建动态矩阵的模板类 以我目前对 C 的了解 我设法解决了一些问题 但我陷入了复制构造函数和重载运算符 的困境 换句话说 我无法创建我的对象的副本 在我看来 这应该可行 但我的朋友编译器告诉我 我有 1 个错误 错误 将 cons
  • 如何排查/解决 Xcode 10.1/iOS 12.1 中出现的“信号强度查询返回错误”日志?

    最近更新到 iOS 12 1 从 12 0 开始 Xcode 10 1 从 10 0 开始 在我的物理设备上进行调试时 在 Xcode 控制台中看到大量错误消息 如下所示 NetworkInfo Signal strength query
  • 客户端Web - 如何随时获取当前记录ID

    我正在努力 基于工作流程状态的不同权限 https stackoverflow com questions 10994216 different permissions based on workflow state问题 但我正在努力解决这
  • 完美穿越

    我正在考虑一个与完美转发有一些相似之处的问题 但是函数参数没有传递给被调用的函数 而是返回了 这就是为什么我称之为 完美传递 问题如下 假设我们有一个函数 它通过引用 可能还有一些额外的参数 获取一个对象 修改该对象 然后返回修改后的对象
  • parseFloat 舍入

    我有一个 javascript 函数 可以自动将输入字段添加在一起 但是添加像 1 35 1 35 1 35 这样的数字会得到 4 050000000000001 的输出 仅作为示例 如何将总数四舍五入到小数点后第二位而不是那个长字符串 输