2016-10-20 2 views
0

私のボタンのonClickListenerを作成して割り当てました。私のボタンのアクションのコードは次のとおりです。出力は代わりの9.8975である理由私は理解しないダブルwierd出力

9.8975 

:私は私のコードを実行し、ボタンをクリックした後

public void MyButtonAction(View view){ 
    double x = 0.0021 * 0.4661; 
    String y = Double.toString(x); 
    TextView z = (TextView)findViewById(R.id.My_TextView); 
    z.setText(y); 
} 

が、これは私が手に出力されます0.0097881

なぜこのようなことが起こっているのか理解してもらえますか?

+1

おそらく科学的表記法で結果が得られます。指数は失われてしまいます。 –

+0

は、科学的表記なしで出力を0.0097881にする方法はありますか? –

+0

String.format( "%。7f"、x);でテキストを設定してみてください。 –

答えて

0

これを試してください。私はこれらの計算にBigDecimalを使用しました。

BigDecimal amt1 = new BigDecimal("0.0021"); 
BigDecimal amt2 = new BigDecimal("0.4661"); 

BigDecimal total = amt1.add(amt2); 

TextView z = (TextView) findViewById(R.id.My_TextView); 
z.setText(total.toString()); 
0

あなたは使用することができます。これは、あなたがフロート後の12数と希望の形式の文字列で終了します

String.format("%.12f", yourValue); 

。ニーズに合わせて調整する

+0

このString.format()は5.1より古いアンドロイドのバージョンでサポートされていますか? –

+0

うまく動作します!これはAPIレベル1 [ソース](https://developer.android.com/reference/java/text/NumberFormat.html)に追加されました – HelloSadness

+0

正しい[ソース](https://developer.android.com/)ですreference/java/util/Formatter.html) – HelloSadness

-1

あなたのソリューションは正しいので、問題はあなたのコードからではないと思います。 レイアウトを確認し、textViewレイアウトパラメータで見つけた場合は、商品にandroid:maxLengthを追加しないでください。この助けを願っています。

0

あなたの答えをありがとう、Antoの答えはちょうどうまくいったようで、最も簡単です。私は編集されたコードの下に貼り付けて完全に動作します。

私はvidulaJのメソッドを試しましたが、結果に満足しました。

解決済み。

public void MyButtonAction(View view){ 
    double x = 0.0021 * 0.4661; 
    String y = Double.toString(x); 
    String y_1 = String.format("%.12f", y); 
    TextView z = (TextView)findViewById(R.id.My_TextView); 
    z.setText(y_1); 
} 
+0

次に、私のasnwerを正しいものとしてマークしてください:) – HelloSadness

関連する問題