如何使用JavaScript将小数点拆分为整数?
我有以下代码如何使用JavaScript将小数点拆分为整数?,javascript,split,Javascript,Split,我有以下代码 var looptijd_1 = de_snelheid * de_afstand; var split_looptijden_1 = new Array(); split_looptijden_1 = looptijd_1.split('.'); 正如你所看到的,这个想法很简单。我想把一个数字除以它的点。因此,如果数字是69.07,我需要一个69的变量和一个07的变量 我知道我必须创建一个变量字符串并将其拆分,但我需要07作为07而不是7(因为我有权对其进行一些数学运算) 我知
var looptijd_1 = de_snelheid * de_afstand;
var split_looptijden_1 = new Array();
split_looptijden_1 = looptijd_1.split('.');
正如你所看到的,这个想法很简单。我想把一个数字除以它的点。因此,如果数字是69.07
,我需要一个69
的变量和一个07
的变量
我知道我必须创建一个变量字符串并将其拆分,但我需要07
作为07
而不是7
(因为我有权对其进行一些数学运算)
我知道我可以取第一个值,然后存储它,然后是变量-存储的变量,所以我得到了0.07
,但我希望有更好的方法来实现这一点,因为这需要在页面上执行12次
有没有更好的方法来实现我的目标(variable1=69;variable2=07
)和两个整数
编辑;
重点是,这是关于步行时间的数学。。。没有常量变量,所以我把它们去掉,然后我想做个小动作(点*60后面的数字)把数字变成字符串(现在是一个数字,不能拆分),然后拆分:
var split_looptijden_1 = looptijd_1.toString().split('.');
console.log(split_looptijden_1[0]); // 69
console.log(split_looptijden_1[1]); // 07
请注意,
new Array()
不是必需的split
仍然返回一个新数组;您创建的一个将被覆盖。因为Javascript使用静态类型,所以不需要声明变量的类型。还要注意的是,如果想要整数,就必须忘记前导零。如果您需要一种特殊的字符格式,那就是字符串。这应该满足您的需要
var looptijd_1 = de_snelheid * de_afstand;
var split_looptijden_1 = new Array();
split_looptijden_1 = (looptijd_1+"").split('.');
必须首先将数字转换为字符串:
split_looptijden_1 = looptijd_1.toString().split('.');
您不需要创建数组。Split会自动执行此操作
var looptijd_1 = de_snelheid * de_afstand + "";
var split_looptijden_1 = looptijd_1.split('.');
整数不能用前导零存储 尝试:
这会将整数值转换为字符串,从而存储
07
而不是7
如果要使用结果执行计算,则无需将数字转换为字符串、拆分,然后将结果字符串转换回数字。用一些基础数学来代替:
var split_looptijden_1 =
[
(looptijd_1 > 0) ? Math.floor(looptijd_1) : Math.ceil(looptijd_1),
looptijd_1 % 1
];
优点:
- 此解决方案在计算“第二个”(0.07)时不使用“第一个值”(67)。(海报原件中使用的词语,单位为“”)
- 通过使用因子1000,它还避免了存储0.069999999318而不是0.07。将系数增加到例如10000以处理例如0.007。(*每增加一位10)
- 与负值的预期效果相同。不进行舍入或转换
variable1 = looptijd_1|0; // = 69 as number. No rounding.
variable2 = (looptijd_1*1000%1000)/1000; // = 0.07 as number. Simple form: x % 1
除了解决方案外:
你说过你需要在一页纸上做12次。但是您没有告诉我们您关心的是计算所需的时间还是混乱的代码。或者两者兼而有之
在这些简单的计算中,时间可以忽略12倍
This is my assumption:
Convert your decimal number into string and then split it using .split() method then store the result into an array.
var num=10.07;
var str=num.toString();
var numarray=str.split('.');
var a=new Array();
a=numarray;
console.log(a[0]);
console.log(a[1]);
尝试下面的示例,您将获得所需的结果
its working fine for me.
Demo:
<!DOCTYPE html>
<html>
<body>
<p id="demo">Integer Part</p>
<p id="demo1">Decimal Part</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var num=10.07;
var str=num.toString();
var numarray=str.split('.');
var a=new Array();
a=numarray;
var x = document.getElementById("demo");
var y = document.getElementById("demo1");
x.innerHTML=a[0];
y.innerHTML=a[1];
}demo1
</script>
</body>
</html>
对我来说很好。
演示:
整数部分
小数部分
试试看
函数myFunction()
{
var-num=10.07;
var str=num.toString();
var numarray=str.split('.');
var a=新数组();
a=努马拉;
var x=document.getElementById(“演示”);
var y=document.getElementById(“demo1”);
x、 innerHTML=a[0];
y、 innerHTML=a[1];
}演示1
我建议练习包括决定十进制值的输出精度。这将使该值更有用,并且可以忽略前面的零的问题
下面是一些利用这种思想的计时器示例。注意拆分精度(n,d)
:
输出:运行时间:1.31
这种方法类似于Node.js中现在已弃用的函数的工作方式,它使Node中的计时器工具变得更简单。parseInt(07)=7,因此将该变量保持为int;)有点困难@艾哈迈特:如果你不需要尝试就能知道,
parseInt('010')
将返回什么,那么你就可以得到额外的积分!我认为您需要发布相关代码的整个部分。听起来你做的事情比需要的复杂得多。大概OP只是想保留69.07
和69.70
等之间的区别。正确的方法是将数字保持为数字,而不是转换为字符串、拆分、解析等。@LukeH我没有猜到parseInt('010)=8
不用尝试。好吧,很方便知道,但不是我想要的答案;P@TWCrap:那你在找什么?显然,不能将07
存储为整数,因为它们没有前导零<代码>07和7
无论如何都代表相同的值。我知道,但我一直在寻找解决办法,这样我就能实现我的目标。你当时没有完全解释你的目标。。。您的原始代码不起作用,所以我怀疑您是否知道这一点。那么,为什么需要它们是整数类型呢?它们现在是数组中的字符串,你可以随意访问,如果它们在某个点上需要是整数,你可以使用parseInt。关键是,这是关于行走时间的数学。。。没有常量变量,所以我去掉它们,然后我想做这个技巧(点后面的数字*60),然后简单地parseInt(split\u looptijden\u 1[1])*60
。问题是什么?如果数字是07或7,它会产生差异:但是你知道一种方法来产生数字07,07。。。还是没有办法?07==7
没有区别。如果你想计算,它们是完全一样的。如果要显示07
,请使用字符串。结束了。但据我所知,我不能用字符串做数学,所以我必须把它变成一个整数,它会是7吗。。。那么你知道一种方法可以让我的intereger 07吗???你不能让一个整数07
;它不会那样储存。你对需要零的地方做了什么数学运算?7和07是同一个号码…@TWCrap:
its working fine for me.
Demo:
<!DOCTYPE html>
<html>
<body>
<p id="demo">Integer Part</p>
<p id="demo1">Decimal Part</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var num=10.07;
var str=num.toString();
var numarray=str.split('.');
var a=new Array();
a=numarray;
var x = document.getElementById("demo");
var y = document.getElementById("demo1");
x.innerHTML=a[0];
y.innerHTML=a[1];
}demo1
</script>
</body>
</html>
class Timer {
constructor() {this.start();}
start() { this.startT = (new Date()).getTime() / 1000 }
stop() { this.stopT = (new Date()).getTime() / 1000 }
elapsed(prec) {
prec=typeof prec === 'undefined' || isNaN(prec) || prec < 0?3:prec;
var a=splitToPrecision((this.stopT - this.startT), 3)
return nToFixed(a[0] + (a[1] / 1000), prec)
}
}
function nToFixed(n,d) {
if(isNaN(d)){d=0}
var sN=String(n),iInd=sN.indexOf('.')
if (iInd > -1 && sN.length-(iInd+1) > d){
return Number(sN+"1").toFixed(d)
}
return Number(n).toFixed(d)
}
function splitToPrecision(i, n){
var iNew = nToFixed(i, n)
var a = String(iNew).split('.')
a[0] = parseInt(a[0])
if (a.length === 0) { a.push(0); } else{ a[1] = parseInt(a[1]) }
return a
}
timer = new Timer()
setTimeout(()=>{
console.log("timeout called")
timer.stop()
console.log(`elapsed: ${timer.elapsed(2)}`)
}, 1234)