2013-05-21 19 views
0

我使用

public static String displayNumberAmount(Number amount, Locale locale) { 
    String.format(locale, "%1$,.2f", amount); 
} 

格式化我在现场的数字和2位小数。

如果我已经数1032将被正确地格式化为1 032,00 但如果我有例如890号低于1000,其将被格式化为890(我需要那些2位小数总是)

中的对象,这些值存储为BigDecimals的,像

BigDecimal val = object.getAmount(); 
String formattedVal = displayNumberAmount(val, myLocale); 

你能告诉我为什么吗?

+1

我无法复制此内容。你能给出确切的代码(你显示的不使用返回的值)和语言环境吗? –

+0

我的BigDecimal val是932.我的语言环境是法语。 – gospodin

+0

嗯,我只是试过'Number amount = new BigDecimal(832); System.out.println(String.format(Locale.FRENCH,“%1 $ ,. 2f”,amount));'。你使用'format'的返回吗? –

回答

0

你的代码适合我。这是我的测试:

import java.math.BigDecimal; 
import java.util.Locale; 

public class Tester{ 
    public static void main(String args[]){ 
     System.out.println("999 " + displayNumberAmount(new BigDecimal(999.99), Locale.FRENCH)); 
     System.out.println("1000 " + displayNumberAmount(new BigDecimal(1000.99), Locale.FRENCH)); 
     System.out.println("1001 " + displayNumberAmount(new BigDecimal(1001.99), Locale.FRENCH)); 
    } 

    public static String displayNumberAmount(Number amount, Locale locale) { 
     return String.format(locale, "%1$,.2f", amount); 
    } 

} 
-1
public static String displayNumberAmount(Number amount, Locale locale) { 
    return String.format(locale, "%1$,.2f", amount); 
} 

'回报' 语句丢失。

+0

我在评论中指出,但这不是OP问题的解释。 –