[英]How to break a number into different parts in Java?
我正在嘗試執行以下操作:假設我有一個類似125.625的數字=>我希望能夠告訴我的程序是1 * 100 + 2 * 10 + 5 * 1 + 0.625。 請問我該怎么辦?
謝謝
如果您的數字是整數,則可以執行以下操作:
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)
}
上面的偽代碼將用成對的數字和數字對乘以值對列表。 所以你會得到這個:
{{1,100}, {2,10}, {5,1}}
小數部分有您想要的最后一部分。
作為參考,floor()函數將給出不帶小數部分的數字,因此floor(1.6)給出1。 %(模)運算符將在除法后或多或少地給出余數。 所以7%2 = 1。
在上面的示例中( 不是 Java代碼),我每次從值中獲得一位。
所以我從125開始:
125 % 10 = 5
Then:
floor(125 / 10) = floor(12.5) = 12
然后我重復得到2和1。同時,我使用指數變量保存了1、10和100。
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
當然,您可以更改代碼以將內容添加到數據結構中。
您可以通過在循環中使用模或%
運算符獲取整數值來獲取每個數字(即: int ones = myVal % 10
),並使用float fraction = val - (int)val;
來獲取小數點值float fraction = val - (int)val;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.