Java で数値をさまざまな部分に分割するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3827637

質問

私は次のことをしようとしています: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;

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top