How to remove digits after decimal using Javascript?
我在HTML网页中使用数字。问题是我想要不带小数的数字。
1 2 3
| <!DOCTYPE html>
<html>
<head> |
//代码脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function copyText()
{
var mynumber=document.getElementById("field1").value;
alert(mynumber);
var mytest=parseInt(mynumber);
}
</head>
<body>
Field1: <input type="number" id="field1" value="123.124" /><br />
<br /><br />
<button onclick="copyText()">Check Number</button>
<p>
A function is triggered when the button is clicked. The function copies the text in Field1 to Field2.
</p>
</body>
</html> |
/ /结束代码
- 选一个:Math.round、Math.ceil、Math.floor。
- 在javascript中如何将浮点转换为int的可能副本?
- 当你说"仍然不起作用"时,告诉别人你得到了什么——错误或工作值,或者什么会更有用?
- 第一个问题是用整数乘以浮点数,现在是解析字符串,使其中一些答案不相关。
- 从javascript编号中删除小数的可能重复项
- 考虑:parseInt(2.3*100)==229
假设您只想截断小数部分(不舍入),这里有一个较短(且较便宜)的替代方法来替代parseInt()或Math.floor():
1 2
| var number = 1.23;
var nodecimals = number | 0; // => 1 |
使用int、float和string输入的bitwise OR 0行为的进一步示例:
1 2 3 4 5 6
| 10 | 0 // => 10
10.001 | 0 // => 10
10.991 | 0 // => 10
"10" | 0 // => 10
"10.1" | 0 // => 10
"10.9" | 0 // => 10 |
- 我们真的应该假设速度是一个问题吗?像这样的操作?它比地板快,因为地板可以处理多种类型。楼层的意图也很明确。但方法新颖,+1。
- 检查如何在函数中更改
- @美观的"地板处理多种类型"—按位或0也是如此:10|0 => 10、10.1|0 => 10、"10"|0 => 10、"10.1"|0 => 10…从语义上讲,floor()更适合。
- 考虑一下,"foo" | 0和"0.1234" | 0都返回0。Math.floor("foo")返回NaN,Math.floor("0.1234")返回0。这是一个显著的区别。
- 不,你的方法不对。((2.3*100)0)==229
- @杰克-谢谢你指出这一点。问题不在方法本身,而是由于浮点运算:2.3 * 100 = 229.99999999999997。不过,我在答案中添加了免责声明。
- @杰克,在某些情况下,这个问题很容易解决,只需加上一个小分数就可以对数字"推动"一下——假设你只处理正数。例如,((2.3+0.00000000001)*100)0==230很好。对所有其他人来说,它只是简单地增加了这么小的数量,以至于没有什么事情发生。我正在构建一个模拟引擎,速度很重要,不需要完美的精度,我认为这对我的需求很有用。;)
你应该使用javascript的parseInt()
- 他已经这样做了,尽管出于某种原因他没有使用radix,但我很好奇为什么他没有简单地重复使用parseInt()。
- 回答错误:parseInt(2.3*100)==229
- @Jake-parseInt按预期工作。是2.3 * 100没有产生你所期望的结果。
在ES6中,可以使用数学对象中的内置方法trunc。
1 2 3 4
| var num = 233.256;
console.log(num.toFixed(0));
//output 233 |
从数学上讲,使用floor函数最有意义。这将为您提供一个前一个最大整数的实数。
4
- 基本上我还是不工作,我在图条上设置这些值
- 基本上,prescribe.values是文本类型字段而不是数字,我认为这可能是问题所在。
- @Shahzadbaloch——你确定是因为你在找一个叫value的地产,另一个叫values?如果这些值中的任何一个未定义,则返回NaN。否则,如果你将一个浮点乘以两个整数,结果总是有效的。
- 再加一个ans7 = Math.floor(.17*parseInt(prescription.value,10)*parseInt(cost.value,10));。
- 我已经添加了代码如何将num值更改为withoud decimal
您是否尝试使用parseInt获取价值?
尝试:
1
| console.log(parseInt(ans7)); |
返回字符串:
1
| (.17*parseInt(prescription.values)*parseInt(cost.value)).toFixed(0); |
返回整数:
1
| Math.round(.17*parseInt(prescription.values)*parseInt(cost.value)); |
请记住在分析int时使用基数:
1
| parseInt(cost.value, 10) |
- 没问题,不是这样的
- toFixed有各种各样的问题(例如,(0.595).toFixed(2)在firefox中给出0.59,在ie中给出0.60),最好使用Math.round或类似的方法。