2012-02-01 22 views
0

我有以下代碼;如何使用JavaScript將小數點分解爲整數?

var looptijd_1 = de_snelheid * de_afstand; 
var split_looptijden_1 = new Array(); 
split_looptijden_1 = looptijd_1.split('.'); 

正如你所看到的,這個想法很簡單。我想通過點來分割一個數字。所以如果號碼是69.07,我想要一個變量69和一個變量07

我知道我必須把這些變量的字符串,分裂他們,但我需要的0707,而不是7(因爲我有做一些數學與它)。

我知道我可以取第一個值,然後存儲那個變量 - 存儲變量,所以我有0.07,但我希望有一個更好的方法來實現這一點,因爲這需要完成12次在頁面上。

有沒有更好的方法來實現我的目標(variable1 = 69; variable2=07)和兩個整數?

編輯; 整點,這是關於步行時間的數學...而且沒有任何常數變量,所以我砍掉他們,然後我想要做的伎倆(數字後點* 60)

+1

parseInt函數(07)= 7所以這是一個有點難以認爲變量int;) – 2012-02-01 15:50:12

+0

@Ahmet:如果你可以告訴 - 不用嘗試它 - 獎勵點數 - parseInt('010')'將返回! – LukeH 2012-02-01 16:00:04

+0

@Ahmet 10 ...:P – Mathlight 2012-02-01 16:01:11

回答

3

如果您想要使用結果執行計算,則不需要將您的號碼轉換爲字符串,將其拆分,然後將結果字符串轉換回數字。使用一些基本的數學代替:

var split_looptijden_1 = 
    [ 
     (looptijd_1 > 0) ? Math.floor(looptijd_1) : Math.ceil(looptijd_1), 
     looptijd_1 % 1 
    ]; 
+0

我會稍後看看; P – Mathlight 2012-02-01 19:40:48

+0

感謝您的幫助,我想我可以與此一起; P – Mathlight 2012-02-02 07:41:02

0

Make該數字的字符串(它的那一刻,它不能split數字),然後把它分解:

var split_looptijden_1 = looptijd_1.toString().split('.'); 
console.log(split_looptijden_1[0]); // 69 
console.log(split_looptijden_1[1]); // 07 

NB的new Array()是沒有必要的。 split無論如何返回一個新的數組;你創建的那個被覆蓋。由於Javascript使用靜態類型,因此不需要聲明變量的類型。還要注意的是,如果你想要整數,你必須忘記前導零。如果你想要一種格式化字符的特殊方式,那就叫做字符串。

+0

但是你知道一種方法來使數字07,07 ...或不是有辦法嗎? – Mathlight 2012-02-01 15:55:40

+1

'07 === 7'沒有區別。如果你想做計算,它們是完全一樣的。如果你想顯示'07',使用一個字符串。結束。 – lonesomeday 2012-02-01 16:37:13

0

這應該怎麼做u需要

var looptijd_1 = de_snelheid * de_afstand; 
var split_looptijden_1 = new Array(); 
split_looptijden_1 = (looptijd_1+"").split('.'); 
0

必須將數字轉換爲字符串第一:

split_looptijden_1 = looptijd_1.toString().split('.'); 
+0

我知道,但我正在尋找一種方法,所以我可以實現我的目標 – Mathlight 2012-02-01 15:52:22

+0

你沒有完全解釋你的目標,然後......你原來的代碼不起作用,所以我懷疑你知道這一點。那麼,爲什麼你需要它們是整型?它們現在是一個數組中的字符串,您可以隨意訪問它們,如果它們需要是某些時候的整數,則可以使用parseInt。 – Fosco 2012-02-01 15:57:22

+0

關鍵是,這是關於步行時間的數學......並且沒有任何常量變量,所以我將它們放在一起,然後我想要做這個訣竅(數字後面的數字* 60) – Mathlight 2012-02-01 15:59:30

0

你不需要做一個數組。 Split會自動執行此操作。

var looptijd_1 = de_snelheid * de_afstand + ""; 
var split_looptijden_1 = looptijd_1.split('.'); 
+0

好吧,方便知道,但不是我正在尋找的答案; P – Mathlight 2012-02-01 15:51:51

+1

@TWCrap:那麼你在找什麼?顯然,你不能將'07'存儲爲* integer *,因爲它們沒有前導零。無論如何,「07」和「7」代表相同的值。 – 2012-02-01 15:56:42

0

整數不能與前導零一起存儲。

嘗試:

var looptijd_1 = de_snelheid * de_afstand; 
var split_looptijden_1 = looptijd_1.toString().split('.'); 

這將整數值轉換爲字符串,從而儲07,而不是7

+0

但據我所知,我不能用字符串做數學,所以我必須做一個整數,它會是7 ...所以你知道一種方式,我可以使我intereger 07? – Mathlight 2012-02-01 15:57:13

+1

你不能做一個整數'07';它不會以這種方式存儲。你在做什麼數學運算到需要零點的地方? 7和07是相同的數字... – 2012-02-01 15:58:37

+0

更新了我的問題 – Mathlight 2012-02-01 16:01:35

0

優點:

  • 此解決方案不使用的 「第一值」(67)計算所述 「第二」(0.07)時。(在「」中使用的原始海報的字數)

  • 它還避免了通過使用因子1000來存儲0.06999999999999318而不是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次時間。

2
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]); 

嘗試用下面的例子中,你會得到你想要的result.If的console.log()沒有工作

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> 
相關問題