javascript - 是否存在 JavaScript 中的 Math.ceil 函数不会从输出中删除小数的情况?
问题描述
是否有一些 Javascript 程序员使用以下语法来删除小数的原因?
Math.ceil(averageCost / 10) * 10;
为什么我们不直接使用 Math.ceil?它不是有效地做与上述相同的事情吗?是否存在 Math.ceil 不起作用的情况?
最初我认为这可能会消除字符串情况并返回零,但在下面的代码中,结果是 NaN -
var name = "Gary";
console.log(Math.ceil(name / 10)); // NaN
console.log(Math.ceil(name)); // NaN
所以我不知道为什么我会看到除以 10 后乘以 10。
解决方案
构造:
Math.ceil(averageCost / 10) * 10;
做一种四舍五入的形式。它具有四舍五入到最接近的 10 整数倍的净效果。所以:
11 => 20
20 => 20
21 => 30
11.99 => 20
Math.ceil(averageCost / 10)
除以 10 并四舍五入到最接近的整数(删除所有小数部分和所有小数部分),然后* 10
将其带回原来所在的相同数字范围,但没有四舍五入删除的部分。
这是一个显示许多结果的示例:
const nums = [10,11,15,18,19,20,21,10.1,11.99,20.19];
for (let num of nums) {
let result = Math.ceil(num/10) * 10;
console.log("Input: ", num, ", Output: ", result);
}
为什么我们不直接使用 Math.ceil?它不是有效地做与上述相同的事情吗?是否存在 Math.ceil 不起作用的情况?
此组合向上舍入到最接近的 10 的整数倍数,而Math.ceil()
仅向上舍入到最接近的整数。所以,你问的两种情况有不同的用途。使用完成您想要完成的任务的那个。对于整数部分已经是 10 的幂的数字(例如 10.3),两者将具有相同的输出,但对于任何其他数字(例如 11.3),两者的输出将不同。
Math.ceil(11.3) === 11
(Math.ceil(11.3 / 10) * 10) === 20
是否存在
Math.ceil()
Javascript 中的函数不会从输出中删除小数的情况?
不,那里没有。它的全部功能是四舍五入到最接近的整数(从而从数字中删除任何小数)。
所以我不知道为什么我会看到除以 10 后乘以 10。
向上舍入到最接近的 10 的整数倍数。
推荐阅读
- flutter - Flutter中的未知LateInitializationError
- python - PyVista 绘图仪无法为多个子图生成背景图像
- excel - 在 vba 中聚焦或单击后如何获取文本框名称
- excel - 如何将具有上次修改日期指定范围的报告与 VBA 合并?
- monitoring - Thruk Nagios 可用性报告+警报历史记录为空,但日志缓存有数据
- caching - 使用 Glide 库缓存的图像会被删除吗?或者 Glide 是否有可能不使用缓存的图像并且每次都进行网络请求?
- html - 添加新的下拉菜单并提交几个 Vales,只提交一个值
- django - 应用程序之间共享的全局变量
- mysql - 使用连接更新以填补 MySQL 中的缺失值
- c# - 将 varchar 值“System.Web.UI.WebControls.TextBox”转换为数据类型 int 时转换失败。