以下のコードを実行するときに、小数点以下の桁数を取得するために使用できるコード行が必要です。
double results = 1500 / 1000;
txtview.setText("K " + resultsoldk);
結果にリマインダーも含める必要があります。
以下のコードを実行するときに、小数点以下の桁数を取得するために使用できるコード行が必要です。
double results = 1500 / 1000;
txtview.setText("K " + resultsoldk);
結果にリマインダーも含める必要があります。
問題は、
double results = 1500 / 1000;
では1.0
なく、整数除算1.5
を行っているためです。除算を行うときは、数値の少なくとも 1 つが浮動小数点数であることを確認してください。例えば:
// By adding .0 you make it a double literal instead of an int literal
double results = 1500.0 / 1000;
String.format(...)メソッドを使用して、次のように文字列をフォーマットできます。
txtview.setText(String.format("K %f", resultsoldk));
ただし、これはあなたの場合には機能しません。2 つの整数を除算すると、結果は整数になります (剰余はありません)。その後、double に変換されますが (double に割り当てるため)、この時点で精度は既に失われています。整数を除算する前に、少なくとも 1 つの整数を double に変換する必要があります。
double results = (double)1500 / 1000;
または、定数を使用する場合
double results = 1500.0 / 1000;
また
double results = 1500 / 1000.0;
あるいは
double results = 1500.0 / 1000.0;
以下のように double を使用してキャストできます
double results = (double)1500 / 1000;
また、DecimalFormat を使用して結果をフォーマットすることもできます
DecimalFormat df = new DecimalFormat("0.00##");
String formattedResult=df.format(results);
String strResult = Double.toString(d);
strResult = strResult.replaceAll("\\d?\\.", "");
わかるかどうかわかりませんが、ドットの後の数字が必要な場合は、この正規表現を使用できます。