繁体   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