簡體   English   中英

如何在Java中將數字分解為不同的部分?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM