十进制数量格式问题 - Android

时间:2015-01-08 05:29:05

标签: android decimal formatter

宣言:

DecimalFormat mAmtFormat = new DecimalFormat("##,##,##,##0.00");

edtAmounts = (EditText) findViewById(R.id.txtAmounts);

从xml文件编辑文本

<EditText
    android:id="@+id/txtAmounts"
    android:layout_height="50dip"
    android:layout_marginLeft="10dip"
    android:background="#FFFFFF"
    android:gravity="center_vertical"
    android:inputType="numberDecimal"
    android:singleLine="true"
    android:textSize="18dip"
    android:textStyle="bold"
    android:width="170dip" />

从后端mCurtotamt是565656565(双倍)

从Sqlite数据库中获取数据:

edtAmounts.setText(String.valueOf(mAmtFormat.format(mDoubleformat
                                .parse(mCurtotamt).doubleValue())))

但是在编辑文本中设置的值为56,56,57,000.00

这里发生了什么。

2 个答案:

答案 0 :(得分:1)

当您从后端获取值时,请不要将其作为字符串,如下所示:

String mCurtotamt = cursor.getString(cursor.getColumnIndex("column_name"));

相反,直接将它作为双精度,如下所示:

double mCurtotamt = cursor.getDouble(cursor.getColumnIndex("column_name"));

然后在设置编辑文本时不需要解析它,但可以直接格式化它:

edtAmounts.setText(String.valueOf(mAmtFormat.format(mCurtoamt)));

当您调用cursor.getString()时将问题转换为String时会引入问题。

答案 1 :(得分:0)

将这个用于印度这样的格式&#34; ##,##,## 0.00&#34; :

static public String formatCurrency(Double doubleVal) {
     return new DecimalFormat("##,##,##0.00").format(doubleVal);
}

此函数以正确的给定格式返回值。如果您传递5555555.00值,则函数返回55,55,555.00作为字符串。