2013-10-24 45 views
0

我是JavaScript新手,所以這可能是一個簡單的修復,我找不出來。初次使用Javascript計算

我正在寫一個簡單的腳本來計算年齡Leapyear,狗年和加五。

var age = prompt ("what's your age?"); 

var dog = age + 7; 
var leapyear = age/4; 
var plusFive = age + 5; 

document.write(dog, leapyear, plusFive); 

JS不計算年齡+ 7,它的寫作年齡+ 7。所以,如果我的年齡提示寫15將在瀏覽器中157(15)打印和(7)我的理解並知道爲什麼。但是我怎麼才能得到它來計算數學。

它實際上返回1573.75155

感謝

+0

var age = parseInt(提示(「你的年齡是?」));' –

回答

0

眼下的Javascript處理輸入一個字符串,所以age是一個字符串。你要使用函數parseInt(age)將它轉換爲int。

Official documentation

另外,我建議你在JS

0

閱讀this關於使用類型要麼取決於你是否接受非整數年齡parseInt(age)parseFloat(age)

0

您的提示是將您的數字作爲字符串返回,所以當您計算15 + 7時,它實際上只是將「7」連接到「15」。

您需要將您的字符串轉換爲數字:

var age = prompt ("what's your age?"); 
age = parseInt(age,10);  // Converts to an integer 
          // parseFloat(age) will allow fractional ages 

var dog = age + 7; 
var leapyear = age/4; 
var plusFive = age + 5; 

document.write(dog, leapyear, plusFive); 
+0

爲什麼2行代碼,當你可以在1中完成? var age = parseInt(提示(「你的年齡是?」));' –

+0

@NicolasMarengo爲了清晰。整個事情可以用兩行完成,只有一個變量,但OP是Javascript的新功能。 – 2013-10-24 22:57:04

+0

爲什麼'parseInt',我們不喜歡分數年齡? :) –

0

年齡將被視爲字符串,字符串和INT結果字符串你要轉換的年齡爲int:

var age= parseInt(prompt("what's your age")); 

更新...

+1

這是Java,而不是JavaScript。 –

+0

var age = +提示符(「你的年齡是多少」);作品也很好。 – brewhaha

1

像大家一直在說的那樣,prompt返回一個字符串,因此需要進行轉換。有許多方法可以做到這一點,其中一些已經提到:

parseInt('123') 
parseFloat('123') 
Number('123') 

這些可能是最常見的,並根據上下文,也很可能是這樣做的最清晰和直觀的方式。還有一些將字符串轉換爲數字的非常簡潔而有趣的方法,具體取決於您想要的數字類型。例如,在字符串中的數字轉換爲浮動,您可以用+運營商前綴是:

+'1.23' 

這似乎真的直覺,特別是因爲4 + '1.23'實際上將返回41.23。發生什麼了?那麼,+運算符在用作unary operator(即它的右側只有一個操作數)時,將始終將操作數值轉換爲數字。比較這兩個(嘗試他們在JavaScript控制檯):

4 + '1.23' // returns 41.23 
4 + +'1.23' // returns 5.23; the second + is a unary operator 

在人爲的例子,如這個,真的讀不太好,所以你可能不希望使用這一招到處。但是,在你的代碼,它讀取相當不錯:

var age = +prompt("What's your age?") 
var dog = age + 7; 
var leapyear = age/4; 
var plusFive = age + 5; 

如果你瞭解一元加上運營商的工作(這真不是火箭手術),那麼你可以得到一些不錯的簡潔,但完全可以理解的結果。

一元運算符+將始終將該值轉換爲Number即浮點數。現在,你可能希望不是整數,在這種情況下,你可以使用bitwise not operator兩次,像這樣:

4 + ~~'1.23' // returns 5; note the double operator 

該操作員首先將值轉換爲整數,然後返回值的bitwise complement,這意味着所有這些位被反轉。使用它兩次意味着我們得到補碼的補碼,即原始值,但這次是一個整數而不是一個浮點數。

希望這是信息!

+0

這是非常有用的,並解決了我的問題,謝謝。我想通了,並與一些+「
」線我把它打印在單獨的行上正確。 – brewhaha