我正在编写一个程序,使用seam和SQL数据库来存储有关员工的信息。我被告知将付款存储在数据库中。当用户输入pay时,它将存储为String,当我使用setter作为employee对象时,它将其转换为int。我的问题是我无法弄清楚如何将它存回到字符串中并返回小数位。有什么想法吗?
答案 0 :(得分:2)
肯定一般工作的最简单的事情可能是
BigDecimal.valueOf(cents).scaleByPowerOfTen(-2).toString();
(这有利于在紧要关头推广到long
或BigInteger
个分数。)
另一种肯定会起作用的解决方案,虽然它稍微复杂一点,但却会出现这样的问题。
return Integer.toString(cents / 100)
+ "."
+ new DecimalFormat("00").format(cents % 100);
答案 1 :(得分:0)
如果将其存储为美分数,请将其格式化为float
,然后将其除以100。
答案 2 :(得分:0)
您可以使用类似的内容。
int priceInCents = ...
String price = String.format("%.2f", priceInCents / 100.0);
答案 3 :(得分:0)
这样的事情会是你想要的吗?
class Currency {
int cents;
public Currency(int cents) {
this.cents = cents;
}
public Currency(String cents) {
this(Integer.parseInt(cents));
}
public int getCents(){
return cents;
}
public double getValue(){
return cents/100.0d;
}
private static final DecimalFormat o = new DecimalFormat("0");
private static final DecimalFormat oo = new DecimalFormat("00");
@Override
public String toString() {
return o.format(cents / 100) + "." + oo.format(cents % 100);
}
}