java金额格式化

Concern 2013-04-08 05:11:42
rt。
1.在java中我想对金额进行格式化

2.两种情况

2.1 少于100
String money="10";

经过转换之后,输入为“0.10”(元).

2.2 大于100
String money="900";

经过转换之后,输入为“9.00”(元).


这是我之前写的,但是少于100就有问题了:
public String getDecimalFormat(String str){
Integer initValue=0;
String outStr = "";
if(str!=null&&!"".equals(str.trim())){
initValue=Integer.parseInt(str);
Integer yuanValue=initValue/100;
DecimalFormat fmt = new DecimalFormat("##,###,###,###,###.00");
double d;
try {
d = Double.parseDouble(String.valueOf(yuanValue));
outStr = fmt.format(d);
} catch (Exception e) {
e.printStackTrace();
}
}
return outStr;
}


...全文
775 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2013-04-09
  • 打赏
  • 举报
回复
lz需要恶补基础知识: 1 小于100出问题,你大于100都出问题,请找本基础书,看看什么叫“整除” 2 显示在屏幕上的,那个叫“输出”,否则干嘛叫System.out.....,你键盘打的,叫“输入”,否则干嘛叫“输入法” 另外,"#,##0.00",注意小数点前面的那个0,如果你用#,那么0.1会变成.10而不是通常你期望的0.10。而前面那么多#,###,###是多余的,只要一个逗号,能够明确表明多少数字一节即可。 最后,精确计算时,不要使用float或double
桃园闲人 2013-04-08
  • 打赏
  • 举报
回复
转换成double或float后再通过工具类DecimalFormat格式化。
dafeicao 2013-04-08
  • 打赏
  • 举报
回复
这时候 你最好 参看下jdk文档 . 另外.我推荐你直接用分操作计算 同时. /100 这类问题.最好办的方法 是 直接字符串最后两位截下来. 加个点. 当然你是想研究精度问题.那么你已经在做了. 加油
it届的吊丝 2013-04-08
  • 打赏
  • 举报
回复
你好我想问下 d = Double.parseDouble(String.valueOf(yuanValue));这句话的做用?
Concern 2013-04-08
  • 打赏
  • 举报
回复
public static String getFormatMoney(String str){
		String moneyString =  "";
		float floatValue=0;
		if(str!=null&&!"".equals(str.trim())){
			floatValue=Float.parseFloat(str)/100;
			moneyString=new DecimalFormat("0.00").format(floatValue);
		}
		return moneyString;
	}
后来我用了这个方法,但是有个朋友说:“用parseFloat,你会死得很难看”,“精度问题” 请问我这段代码还有什么地方需要优化的?
suciver 2013-04-08
  • 打赏
  • 举报
回复

public static String getDecimalFormat(String str){ 
        double initValue=0; 
        String outStr = ""; 
        if(str!=null&&!"".equals(str.trim())){ 
            initValue=Double.parseDouble(str); 
            double yuanValue=initValue/100; //用double不会丢掉小数点后面的
            DecimalFormat   fmt   =   new   DecimalFormat("##,###,###,###,##0.00");   
            double d; 
            try { 
                d = Double.parseDouble(String.valueOf(yuanValue)); 
                outStr = fmt.format(d); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
        } 
        return outStr; 
    }
lvzg_005 2013-04-08
  • 打赏
  • 举报
回复
"##,###,###,###,##0.00
噢噢噢噢 2013-04-08
  • 打赏
  • 举报
回复

String str="10";
		Double initValue=0D;
        String outStr = "";
        if(str!=null&&!"".equals(str.trim())){
            initValue= Double.parseDouble(str);
            Double yuanValue=initValue/100;
            System.out.println(yuanValue);
            DecimalFormat   fmt   =   new   DecimalFormat("##,###,###,###,###0.00");  
            double d;
            try {
                d = Double.parseDouble(String.valueOf(yuanValue));
                outStr = fmt.format(d);
                System.out.println(outStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧