2010-09-30 157 views

回答

3

如果你有你的電話號碼爲整數,你可以做這樣的事情:

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相同的時間。

+0

哇,那真是太棒了。你能否解釋一下這個背後的數學問題。因爲我打算做的很長。即將該數字轉換爲一個字符串,然後將該數字分開,然後開始對該字符串進行一些長處。我知道這將是錯誤的解決方法。但你的數學如何工作?我不熟悉指數和地板價值等詞彙。你能告訴我你的代碼是如何工作的嗎?謝謝..原因爲什麼是因爲我想了解它背後的邏輯,所以我可以將它應用到其他地方,而不僅僅是複製和粘貼它。 – Pavan 2010-09-30 04:18:18

+0

@JoshD:你完全錯過了小數部分,朋友。 – 2010-09-30 04:24:45

+0

@Adeel Ansari:它在'小數部分'。這是第二行。 (請記住這是僞代碼。) – JoshD 2010-09-30 04:28:12

0

您可以通過使用模或%運營商的整數值循環得到每個數字(即:int ones = myVal % 10),並獲得分數值做float fraction = val - (int)val;

3
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 

當然,您可以更改代碼以將東西添加到數據結構中。

+2

+1。順便說一句,你們這些人應該避免做他們的任務,特別是當你沒有看到他們的努力時。 – 2010-09-30 04:23:39

+1

如果有人想回答這個傢伙的作業很好。 OP可以很容易地從看到某人的正確答案中獲得更多的信息,而不是從你在學校做的hackjob中寫出。這完全取決於他想從中得到什麼。 – 2010-09-30 04:31:48

+0

@Andrew Hubbs:你不能只是通過觀看某人游泳來學習。這個比喻也適合於IMO。所以,他們必須嘗試出來一些代碼,不管是否hackjobs。至少讓你的大腦工作並嘗試解決問題。通過閱讀別人的代碼很好理解。但編寫自己的代碼是完全不同的經驗。我相信這些黑客真的會給你一些寶貴的技能。 – 2010-09-30 04:42:55