我正在查看这行代码,我无法理解它。这个特殊的代码是javascript,但我最终想制作一个java android应用程序。
$("#TxtHalfDot").val(Math.round((60000/bpm)*3*1000)/1000);
//bpm being a user entered value
我理解数学的过程,并且已经多次使用计算器。但是,我无法理解* 1000后跟/ 1000。
我的问题
这是“math.round”函数的奇怪行为还是只是根本不需要。我已经看过很多但是当我看到它时我觉得它可以省略,但我不是电脑......
(60000 / bpm)* 3 得出的结果相同((60000 / bpm)* 3 * 1000)/ 1000
答案 0 :(得分:9)
如果你仔细观察,你会发现整个术语在四舍五入后除以1000 。
所以它不只是x * 1000 / 1000
。
答案 1 :(得分:6)
Math.round(a*1000)/1000
会将数字a
舍入为3位小数。
Ex:Math.round(1234.123456 * 1000)/ 1000 = 1234.123
这是如何工作的是这样的:
假设数字a
具有x
小数(在我们的示例6中)。您将数字乘以10乘以n
(在我们的示例3中)的幂,有效地将小数点n
数字向右移动。然后你绕数字(切掉所有小数)。然后将10除以n
的幂,将小数点移回。
答案 2 :(得分:1)
它与括号有关。
Math.round((60000/bpm)*3*1000)/1000
完整地读取..
将60000除以bpm然后乘以3000然后执行Math.round然后除以1000
在将可能的浮点数除以1000
之前,你正在四舍五入