programing

통화 기호없이 통화 서식 지정

nasanasas 2020. 12. 30. 08:16
반응형

통화 기호없이 통화 서식 지정


NumberFormat.getCurrencyInstance(myLocale)에게 주어진 로케일에 대한 사용자 정의 통화 형식을 얻기 위해 사용 하고 있습니다. 그러나 여기에는 항상 원하지 않는 통화 기호가 포함됩니다. 통화 기호없이 지정된 로케일에 적합한 통화 번호 형식을 원합니다.

를하면 format.setCurrencySymbol(null)예외가 발생합니다 ..


다음은 작동합니다. 약간 못 생겼지 만 계약을 이행합니다.

NumberFormat nf = NumberFormat.getCurrencyInstance();
DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) nf).getDecimalFormatSymbols();
decimalFormatSymbols.setCurrencySymbol("");
((DecimalFormat) nf).setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(nf.format(12345.124).trim());

통화 형식에서 패턴을 가져오고 통화 기호를 제거하고 새 패턴에서 새 형식을 재구성 할 수도 있습니다.

NumberFormat nf = NumberFormat.getCurrencyInstance();
String pattern = ((DecimalFormat) nf).toPattern();
String newPattern = pattern.replace("\u00A4", "").trim();
NumberFormat newFormat = new DecimalFormat(newPattern);
System.out.println(newFormat.format(12345.124));

대신 빈 문자열로 설정하십시오.

DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setCurrencySymbol(""); // Don't use null.
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(12.3456)); // 12.35

주어진 솔루션은 효과가 있었지만 예를 들어 유로에 공백을 남겼습니다. 나는 결국 :

numberFormat.format(myNumber).replaceAll("[^0123456789.,]","");

이렇게하면 통화 나 다른 기호없이 숫자에 대한 통화 형식이 지정됩니다.


아마도 우리는 대체 또는 하위 문자열을 사용하여 형식화 된 문자열의 숫자 부분을 취할 수 있습니다.

NumberFormat fmt = NumberFormat.getCurrencyInstance(Locale.getDefault());
fmt.format(-1989.64).replace(fmt.getCurrency().getSymbol(), "");
//fmt.format(1989.64).substring(1);  //this doesn't work for negative number since its format is -$1989.64

DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(2);
String formatted = df.format(num);

에 대해 많은 유형에서 작동 num하지만 BigDecimal로 통화나타내는 것을 잊지 마십시오 .

num소수점 뒤에 두 자리 이상이 있을 수있는 상황 에서는 두 자리 df.setMaximumFractionDigits(2)만 표시하는 데 사용할 수 있지만 응용 프로그램을 실행하는 사람에게 근본적인 문제 만 숨길 수 있습니다.


두 줄 답변

NumberFormat formatCurrency = new NumberFormat.currency(symbol: "");
var currencyConverted = formatCurrency.format(money);

TextView에서

new Text('${formatCurrency.format(money}'),

필요 u는 거대한 보고서 나 전망을 가지고 거의 모든 열이 통화 값을 표시 할 때 "기호없이"통화 형식이 기호가 필요하지 않다고하지만, 예 수천 분리 및 소수 쉼표를 들어, 기호는 성가신입니다. 넌 필요해

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

그리고 아닙니다

new DecimalFormat("$#,##0.00");

참조 URL : https://stackoverflow.com/questions/8658205/format-currency-without-currency-symbol

반응형