如何使用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)

  • 与负值的预期效果相同。不进行舍入或转换

注意:此解决方案忽略了对“07”的请求,该请求只是混合到答案中的次优解决方案的一部分

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)