Java 小数格式删除点后的零
我想格式化用户的输入,这没关系,但当我尝试在dotJava 小数格式删除点后的零,java,android,Java,Android,我想格式化用户的输入,这没关系,但当我尝试在dotDecimalFormat后输入零时,它会被删除。 我使用以下代码: DecimalFormat df = new DecimalFormat("#,###.##"); Number n = df.parse(v); amountEdit.setText(df.format(n)); 输入/输出示例: 9.0->9 9.9->9.9 9.90->9.9 它删除零 编辑: 我用TextChangedListener 其思想是将用户输入的格
DecimalFormat
后输入零时,它会被删除。
我使用以下代码:
DecimalFormat df = new DecimalFormat("#,###.##");
Number n = df.parse(v);
amountEdit.setText(df.format(n));
输入/输出示例:
9.0->9
9.9->9.9
9.90->9.9
它删除零
编辑:
我用TextChangedListener
其思想是将用户输入的格式设置为999.99
(这是最大值)
它删除零
好吧,是的,它会-你特别使用了。##
,意思是“只包括数字,如果它们是重要的”。如果希望始终至少有一个小数位,请使用
DecimalFormat df = new DecimalFormat("#,###.0#");
如果始终希望有两位小数,请使用:
DecimalFormat df = new DecimalFormat("#,###.00");
<>你应该考虑一下你希望0.5的格式。您想要“0.5”还是“.5”?“#”表示包含此数字(如果有关系),并且由于9,0==9
,格式将删除它
如果小数点后至少需要两位数字,则应替换为以下格式:
DecimalFormat df = new DecimalFormat("#,###.00");
当然,我要0.5分too@ManOfWar:在这种情况下,您可能需要“#,##0.00”。基本上,您需要更仔细地阅读
DecimalFormat
文档。当我放置“.”时,我的编辑文本将填充00,如5.00,并且我无法添加其他数字。当然,我要去读书it@ManOfWar:在这种情况下,听起来你的整体方法(你没有完全描述或展示)是有缺陷的。我们所能看到的只是你的输入和现有的输出,我在这里已经解释过了。@ManOfWar:这是一个问题,不是一个答案——但从根本上说,你需要重新思考你的方法。不要让我费力地阅读100行代码,而是问问自己,在每种情况下,你希望得到的结果是什么,以及你是否认为用一种格式是可行的……你的示例输入不包含点,而是分号?编辑了我的答案@CagriYalcin
DecimalFormat df = new DecimalFormat("#,###.00");
DecimalFormat df = new DecimalFormat("#,###.00");