2015-12-19 5 views
5

私はフロートとして最初の2つの10進数字を取得したいという巨大な倍数を持っています。次に例を示します。Javaが最初に2つの小数点以下2桁を得ます

double x = 0.36843871 
float y = magicFunction(x) 
print(y) 

出力:36

ご質問はお気軽に理解していない場合。

+0

'magicFunction'の実装を表示 – Ramanlfc

+0

最初の2つの数字だけを' only 'にして、あなたの例からfloat(または)として保存しますか?36.843871として出力が必要ですか? –

+0

浮動小数点の出力には10進数と10進数が必要です。 – ThatPixelCherry

答えて

6

あなたは100掛けるとMath.floor(double)

int y = (int) Math.floor(x * 100); 
System.out.println(y); 

などを使用することができ、私はあなたが floatを使用する場合は、あなたが 36.0になるだろうということ(要求)

36 

注得ます。

+0

驚くばかり!ちょうど私が探していたもの。ありがとう:D – ThatPixelCherry

+5

xが1より大きい場合、2桁以上の回答が得られます。 –

+1

'x%1d * 100'が1より大きい場合 – WalterM

3

xに100を掛けて、floatの代わりにintを使用できます。私は以下のコードを試みた:

double x = 0.36843871; 
int y = (int)(x*100); 
System.out.println(y); 

をとして出力を得た:X場合

36 
2

は1より大きく負である:

double x = -31.2232; 
    double xAbs = Math.abs(x); 
    String answer = ""; 
    if((int)xAbs == 0) { 
     answer = "00"; 
    } 
    else { 
     int xLog10 = (int)Math.log10(xAbs); 
     double point0 = xAbs/Math.pow(10, xLog10 + 1); // to 0.xx format 
     answer = "" + (int)(point0 * 100); 
    } 
    System.out.println(answer); 
+0

戻り値36。最初の2桁は23です。 – EJP

+0

それを入手して編集しました。ありがとう@EJP。 – snvrthn

+0

そして、ゼロを100倍するのはどういうことでしょうか? – EJP

2

負の場合、すべての範囲を処理します正しく:

double y = Math.abs(x); 
while (y < 100) 
    y *= 10; 
while (y > 100) 
    y /= 10; 
return (float)(int)y; 

また、正しく表示されません。

関連する問題