私は次のことをしようとしています: 125.625 のような数値があるとしましょう => プログラムに 1 * 100 + 2 * 10 + 5 * 1 + 0.625 であることを伝えたいと思います。どうすればそれができますか?
ありがとう
私は次のことをしようとしています: 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 コードではありません) で行っていることは、値から一度に 1 桁ずつ取得することです。
だから私は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;