1. 程式人生 > >取整 運算定要註意數據類型

取整 運算定要註意數據類型

向上取整 需要 scrip 整數 判斷語句 發現 數據類型 例子 出現

在學習js的過程中經常遇到需要大量計算的問題,此時就需要用到那些常見的運算符。在寫代碼進行數學計算的時候輸入和輸出的數據類型要格外註意。整數和小數,數據類型不同結果也不一樣。有時會因為數據類型,導致寫出的代碼調試的時候出現錯誤,不能實現要求的功能。

下面就一個題目來說明:

題目:

找出100-999之間的所有“水仙花數”。所謂水仙花數是指一個三位 數,各位數字的立方和等於該數本身。(如153=1的3次方+5的3次方+3的3次方)並輸出這些數字。

題目思路很清晰明了,主要用到for循環和if判斷語句。

開始我也覺得很簡單,但上來寫出來的代碼卻無法得出我想要的結果。

錯誤代碼:

<script>

1 for (var i = 100; i <= 999; i++) {
2 var x = i / 100;
3 //x = Math.floor(x);

4 var y = i % 100;
5 y = y / 10;
6 //y = Math.floor(y);
7 var z = i % 10;

8 if (x * x * x + y * y * y + z * z * z == i) {
9 document.write(i);
10 document.write("&nbsp");
}
}
</script>

註意代碼中的兩行註釋,最初寫完的代碼中沒有那兩句,每行代碼前面的數字是我故意加上便於分析原因.(原代碼中沒有前面的數字序號)

這也導致,我調試運行的時候老是不出結果,檢查代碼也沒發現問題.後來我直接給i賦值153(題目中的例子),再通過審查元素我讓發現,在代碼執行到第2行時,x的值是小數1.53,不是1,後面也出現了這種問題.我才發現原來是輸出的數據類型有問題.隨後我加了兩行取整的代碼,再調試就成功了.

註意: 重要!!! 今後遇到各種運算問題時一定要註意!

常用的三種取整

1. Math.Round:四舍六入五取整

2. Math.Ceiling:向上取整,只要有小數都加1

3. Math.Floor:向下取整,總是舍去小數

修改後正確的代碼:

<script>

for (var i = 100; i <= 999; i++) {

var x = i / 100;
x = Math.floor(x);
var y = i % 100;
y = y / 10;
y = Math.floor(y);
var z = i % 10;

if (x * x * x + y * y * y + z * z * z == i) {
document.write(i);
document.write("&nbsp");
}
}
</script>

取整 運算定要註意數據類型