第一次发帖。对不起,如果我搞砸了。
基本上,如果double的值为2.0,则返回 $ 2.00 的代码,但如果double的值为.75(而不是$ 0.75),则返回$ .75。
我的问题是试图找出如何做到这一点。我可以使用formatter.format(price)
,但这并没有省略前导0.我也可以尝试
String sPrice = String.valueOf(price);
sPrice = sPrice.replaceFirst("^0+", "");
但我的问题是,一旦我达到这一点,当我最终打电话给它时,我为自己做了更多的工作,因为我必须让它添加0如果有& #39;小数点后只有一个数字。
如果您想查看它,请查看我的完整代码,如果有帮助的话。
import java.text.*;
public class MenuItem
{
private String name;
private double price;
private NumberFormat formatter = NumberFormat.getCurrencyInstance();
public MenuItem(String name, double price)
{
this.name = name;
this.price = price;
}
public String getName()
{
return name;
}
public double getPrice()
{
return price;
}
public String toString()
{
return name + " " + formatter.format(price);
}
}
提前致谢。
答案 0 :(得分:2)
你可以使用它,
NumberFormat formatter = NumberFormat.getCurrencyInstance(); formatter.setMinimumIntegerDigits(X);
其中x是您想要的位数。
根据输入,可以根据需要推出更多x。
答案 1 :(得分:1)
您可以使用简单的自定义DecimalFormat
代替标准币NumberFormat
:
private static final DecimalFormat FORMAT = new DecimalFormat("$#.00");
public static void main(String[] args) {
System.out.println(FORMAT.format(0));
System.out.println(FORMAT.format(0.01));
System.out.println(FORMAT.format(0.75));
System.out.println(FORMAT.format(1.2345));
System.out.println(FORMAT.format(2.00));
System.out.println(FORMAT.format(100.00));
}
输出:
$ 00
$ .01
$ .75
$ 1.23
$ 2.00
$ 100.00
波希米亚人在评论中提出了一个很好的观点,即上述解决方案非常以美国为中心。如果需要支持其他语言环境,可以更改模式以适合您的语言环境。但是,如果您需要支持多种语言环境,那么该解决方案将无法正常运行。
对于多个语言环境,我认为我只是坚持NumberFormat.getCurrencyInstance(Locale)
返回的默认货币格式化程序。如果必须在所有语言环境中删除前导零,那么abo's answer(x = 0)应该可以解决问题。但我会提醒你注意,因为可能存在一些区域,其中前导零不是可选的,而是强制性的。
答案 2 :(得分:0)
如果是public String toString()
{
String priceString = formatter.format(price);
if(price < 1 && price > -1 && price != 0)
priceString = 0+ priceString;
return name + " " + priceString;
}
<!-- for mobile -->
<link rel="stylesheet" href="/dist/css/mobile.css">
<!-- for desktop -->
<link rel="stylesheet" href="/dist/css/desktop.css">
答案 3 :(得分:0)
尝试更简单的方法
double one = 0.75;
double two = 2.00;
System.out.println(String.format("$%.2f", one).replace("$0.", "$."));
System.out.println(String.format("$%.2f", two).replace("$0.", "$."));
答案 4 :(得分:0)
您遇到字符串问题,请使用字符串解决方案:
return name + " " + formatter.format(price).replaceAll("\\b0\\.", ".");
\\b
(字边界)可确保您不会将"$10.50"
更改为"$1.50"
。