Java中如何将一个数字分成不同的部分?

发布于 2024-09-25 04:33:47 字数 105 浏览 2 评论 0原文

我想做以下事情:假设我有一个像 125.625 => 的数字我希望能够告诉我的程序是 1 * 100 + 2 * 10 + 5 * 1 + 0.625。请问我该怎么做?

谢谢

I'm looking to do the following : let's say I have a number like 125.625 => I would like to be able to tell my program that is 1 * 100 + 2 * 10 + 5 * 1 + 0.625. How could I do that please ?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

兔小萌 2024-10-02 04:33:47

如果你的数字是一个整数,你可以这样做:

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。

If you have your number as an integer, you could do something like this:

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)
}

The above psuedocode will fill the listofvaluepairs with pairs of the digit and the number to multiply by. So you'd get this:

{{1,100}, {2,10}, {5,1}}

And the fractional part has that last piece you wanted.

For reference, the floor() function will give the number without the fractional part, so floor(1.6) gives 1. The % (modulo) operator will more or less give the remainder after division. So 7%2 = 1.

What I do in the above example (which is very much not java code), is get one digit at a time from the value.

So I start with 125:

125 % 10 = 5
Then:
floor(125 / 10) = floor(12.5) = 12

Then I repeat to get 2 and 1. At the same time I'm saving 1, 10, and 100 using the exponent variable.

后eg是否自 2024-10-02 04:33:47
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

当然,您可以更改代码以向数据结构添加内容。

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;
}

Will print:

0.625 + 1 * 5.0 + 10 * 2.0 + 100 * 1.0

Of course you can change the code to add stuff to a data structure.

故事与诗 2024-10-02 04:33:47

您可以通过在整数值循环中使用模或 % 运算符来获取每个数字(即:int Ones = myVal % 10),并获取小数值do 浮点分数 = val - (int)val;

You can get each digit by using the modulo or % operator in a loop for the integer values (i.e.: int ones = myVal % 10), and to get the fractional value do float fraction = val - (int)val;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文