548.705078125
输出 - > 548705078125
最好的方法是什么,而不是使用正则表达式或.replace('.','')
?
答案 0 :(得分:7)
试试这个:
Number((548.705078125).toString().split(".").join(""))
答案 1 :(得分:5)
看,没有可怕的,讨厌的字符串函数或正则表达式!
function noStringsOrRegexOrDecimals(num) {
while (num % 1 !== 0) {
num *= 10;
};
return num;
}
noStringsOrRegexOrDecimals(548.705078125);
是的,我知道这对你的工具包(although it is fast)来说不是一个非常有用的功能。而且由于浮点数学的工作原理,它会因某些数字而中断,并且它将无法在我们辉煌的八进制未来中发挥作用。
答案 2 :(得分:3)
如果你没有使用replace()或regex(),那么split()呢?
var str = '548.705078125';
str = str.split(".");
str = str[0]+str[1];
答案 3 :(得分:2)
这些都是奇怪的限制。在c === 548705078125
:
var f = 548.705078125;
var c = Math.floor(f);
f = f.toString();
for(var i = 1; (c = Math.floor(c/10)) > 0; i++);
c = parseInt(f.substring(0, i)+f.substring(i+1));
答案 4 :(得分:2)
我无法相信没有人建议使用明显的jQuery方法来做到这一点,因此您不需要JavaScript字符串或数学函数:
function removeDot(num) {
var result = $.ajax({
url: "removeDot.php",
type: "POST",
data: {"num" : num},
dataType: "text",
async:false
}).responseText;
return Number(result);
}
console.log(removeDot(548.705078125)); // output -> 548705078125
我将“removeDot.php”的实现作为读者的练习......
答案 5 :(得分:2)
你需要将数字作为一个int ...所以你可以将它作为一个int传递给一个函数....你确定你不需要以下代码吗?
var num = 2395847.3428345;
Math.floor(num); // result is 2395847
答案 6 :(得分:1)
将它变成一个字符串并循环遍历其中的所有字符并查找chr ==“。”
从未听说过你不应该使用正则表达式或替换的情况。
答案 7 :(得分:1)
var n = 548.705078125.toString();
var i = n.substr(0, n.indexOf('.')) + n.substr(n.indexOf('.')+1);
alert(i);
答案 8 :(得分:1)
没有正则表达式!
var num = 548.705078125;
function remove_decimal(num)
{
var numStr = "" + num;
var decimalIndex = numStr.indexOf('.');
return num * Math.pow(10, (numStr.length - (decimalIndex + 1)));
}
remove_decimal(num) -> 548705078125
答案 9 :(得分:1)
假设你的号码已经是一个浮点数(用于调用需要整数的函数,我猜),你可以使用它:
floor(1e9 * x); // where x is 548.705078125 in your case
floor
将免除处理器中任何奇怪的精度问题。