gpt4 book ai didi

java - 如何使用具有三位小数的货币掩码?

转载 作者:行者123 更新时间:2023-12-01 13:48:57 24 4
gpt4 key购买 nike

我正在使用一个类将 EditText 的值格式化为货币。此类使用函数 NumberFormat.getCurrencyInstance().format((parsed/100));格式化。这个类使我的值具有两位小数(R$2,00)。我希望它具有三位小数(R$2,000)。它的气体值(value)。在巴西,我们对天然气使用小数点后三位。

这是我正在使用的类:

public class MascaraMonetaria implements TextWatcher{

final EditText mEditText;
String current;
static Context context;
public MascaraMonetaria(EditText mEditText, String current, Context context) {
super();
this.mEditText = mEditText;
this.current = current;
}

@Override
public void afterTextChanged(Editable arg0) {}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}

@Override
public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
if (!s.toString().equals(current)) {
mEditText.removeTextChangedListener(this);

String cleanString = s.toString().replaceAll("[R$,.]", "");

double parsed = Double.parseDouble(cleanString);
String formatted = NumberFormat.getCurrencyInstance().format((parsed/100));

current = formatted;

mEditText.setText(formatted);
mEditText.setSelection(formatted.length());
mEditText.addTextChangedListener(this);
}

}

public static double stringMonetarioToDouble(String str) {
double retorno = 0;
try {
boolean hasMask = ((str.indexOf("R$") > -1 || str.indexOf("$") > -1) && (str
.indexOf(".") > -1 || str.indexOf(",") > -1));
// Verificamos se existe máscara
if (hasMask) {
// Retiramos a mascara.
str = str.replaceAll("[R$]", "").replaceAll("[$]", "").replaceAll("[.]", "").replaceAll("[,]", ".");
}
// Transformamos o número que está escrito no EditText em double.
retorno = Double.parseDouble(str);

} catch (NumberFormatException e) {

}
return retorno;

}

}

最佳答案

我做到了,我使用了这个答案的代码:Correctly formatting currencies to more decimal places than the Locale specifies

这是我的代码:

        formatted.setMinimumFractionDigits(3);
formatted.setMaximumFractionDigits(3);

current = formatted.format((parsed/1000));

mEditText.setText(formatted.format((parsed/1000)));
mEditText.setSelection(formatted.format((parsed/1000)).length());
mEditText.addTextChangedListener(this);

关于java - 如何使用具有三位小数的货币掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20121598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com