最簡單的概念其實是轉成字串,然後利用 substring 之類的方法去擷取出來,但是要先將整數型別轉換成字串型別,擷取後又再度轉換成整數型別,這樣程式碼似乎沒有那麼精簡。
若從數學計算的角度來看,我們先簡化問題:
舉例來說:我們想從1234中,分別擷取個位數、十位數、百位數、千位數
千位數:從最高位數去思考最簡單,1234除以1000等於1.234,若將變數宣告為整數型態,則變數會存放1,也就會得到我們想要的1
百位數:1234除以100等於12.34,整數型態會取得12,但是我們需要的只是2,所以將12除以10然後取餘數,也就會得到我們想要的2
十位數:1234除以10等於123.4,整數型態會取得123,但是我們需要的只是3,所以將123和10相除取餘數,也就會得到我們想要的3
個位數:1234除以1等於1234,整數型態會取得1234,但是我們需要的只是4,所以將1234和10相除取餘數,也就會得到我們想要的4
由以上規則來看我們會發現,若想將特定幾個位數之後(右邊)去掉的方式就是將其除以10的特定次方,利用整數型態的變數會將小數點直接刪除的特色去完成(千位數:除以10的3次方,百位數:除以10的2次方,十位數:除以10的1次方,個位數:除以10的0次方)
而想要把某個數值的個位數找出來,可以利用除以10,然後取餘數的方式(概念上就是把十位數以上的數值過濾掉,除以10的動作,就會將10的倍數過濾掉了,而取餘數就是剩下來我們想要擷取的值)
雖然我們在此範例的最高位數中,將只有一個位數的1除以10取餘數,答案是「0餘1」,還是原本的數值1,所以我們可以在以上的推導中找到固定的模式。
JAVA範例:
public class test { public static void main(String[] args) { System.out.println(digit(1234, 0)); // 個位數(n=0):4 System.out.println(digit(1234, 1)); // 十位數(n=1):3 System.out.println(digit(1234, 2)); // 百位數(n=2):2 System.out.println(digit(1234, 3)); // 千位數(n=3):1 } public static int digit(int number, int n) { return (int) (number / Math.pow(10, n) % 10); } }
重點整理:
除以10的n次方之後,再和10取餘數
n 代表位數(個位數為0、十位數為1、以此類推)
這裡我們只先討論整數擷取特定位數的情形,若有小數點的情形等有時間我們再來研究。
Gambling - Casino. Dr.D
回覆刪除There are 3 different types of 전라북도 출장샵 casino 부산광역 출장샵 games, 3 different payment methods, 3 different payment 동해 출장샵 options, and more. The most 전주 출장마사지 popular are cash games, slots, 부산광역 출장안마 and