我期待着做以下工作:假設我有一個像125.625 =>的數字我希望能夠告訴我的程序是1 * 100 + 2 * 10 + 5 * 1 + 0.625。我該怎麼做?如何在Java中將數字分成不同的部分?
感謝
我期待着做以下工作:假設我有一個像125.625 =>的數字我希望能夠告訴我的程序是1 * 100 + 2 * 10 + 5 * 1 + 0.625。我該怎麼做?如何在Java中將數字分成不同的部分?
感謝
如果你有你的電話號碼爲整數,你可以做這樣的事情:
value := 125.625
fractional part := value % 1
value := floor(value)
exponent = 1
listofvaluepairs = array()
while(value > 0)
{
tmp_part := value % 10
listofvaluepairs.add(value, exponent)
exponent = exponent * 10
value = floor(value/10)
}
上述僞代碼將填補listofvaluepairs與數字的對和通過乘以數。所以,你會得到這樣的:
{{1,100}, {2,10}, {5,1}}
而且其小數部分有最後你想要的那件。
作爲參考,floor()函數將給出沒有小數部分的數字,所以floor(1.6)給出1. % (modulo) operator或多或少會給出除法後的餘數。所以7%2 = 1.
我在上面的例子中做了什麼(其中非常多的而不是 java代碼),每次從該值中獲得一位數。
於是我開始與125:
125 % 10 = 5
Then:
floor(125/10) = floor(12.5) = 12
然後我再說一遍拿到2和1。在我使用的是指數變量保存1,10,和100相同的時間。
您可以通過使用模或%
運營商的整數值循環得到每個數字(即:int ones = myVal % 10
),並獲得分數值做float fraction = val - (int)val;
double num = 125.625;
System.out.print(num - (int)num);
num = (int) num;
for (int i=10; num!=0; i*=10) {
System.out.print(" + " + i/10 + " * " + (num % i)/i*10);
num -= num % i;
}
會打印:
0.625 + 1 * 5.0 + 10 * 2.0 + 100 * 1.0
當然,您可以更改代碼以將東西添加到數據結構中。
+1。順便說一句,你們這些人應該避免做他們的任務,特別是當你沒有看到他們的努力時。 – 2010-09-30 04:23:39
如果有人想回答這個傢伙的作業很好。 OP可以很容易地從看到某人的正確答案中獲得更多的信息,而不是從你在學校做的hackjob中寫出。這完全取決於他想從中得到什麼。 – 2010-09-30 04:31:48
@Andrew Hubbs:你不能只是通過觀看某人游泳來學習。這個比喻也適合於IMO。所以,他們必須嘗試出來一些代碼,不管是否hackjobs。至少讓你的大腦工作並嘗試解決問題。通過閱讀別人的代碼很好理解。但編寫自己的代碼是完全不同的經驗。我相信這些黑客真的會給你一些寶貴的技能。 – 2010-09-30 04:42:55
哇,那真是太棒了。你能否解釋一下這個背後的數學問題。因爲我打算做的很長。即將該數字轉換爲一個字符串,然後將該數字分開,然後開始對該字符串進行一些長處。我知道這將是錯誤的解決方法。但你的數學如何工作?我不熟悉指數和地板價值等詞彙。你能告訴我你的代碼是如何工作的嗎?謝謝..原因爲什麼是因爲我想了解它背後的邏輯,所以我可以將它應用到其他地方,而不僅僅是複製和粘貼它。 – Pavan 2010-09-30 04:18:18
@JoshD:你完全錯過了小數部分,朋友。 – 2010-09-30 04:24:45
@Adeel Ansari:它在'小數部分'。這是第二行。 (請記住這是僞代碼。) – JoshD 2010-09-30 04:28:12