0

我正在编写一个程序,使用 seam 和一个 SQL 数据库来存储有关员工的信息。有人告诉我将工资以整数形式存储在数据库中。当用户输入工资时,它被存储为一个字符串,当我为员工对象使用一个 setter 时,它把它变成一个 int。我的问题是我不知道如何将它存储回字符串中,并且小数点就位。有任何想法吗?

4

4 回答 4

3

通常肯定会起作用的最简单的事情可能是

BigDecimal.valueOf(cents).scaleByPowerOfTen(-2).toString();

(这具有在紧要关头推广到美分longBigInteger美分数量的优势。)

另一个肯定会起作用的解决方案,虽然稍微复杂一些,但类似于

return Integer.toString(cents / 100)
     + "."
     + new DecimalFormat("00").format(cents % 100);
于 2012-05-31T13:02:49.440 回答
0

你可以使用类似的东西。

int priceInCents = ...
String price = String.format("%.2f", priceInCents / 100.0);
于 2012-05-31T13:03:08.687 回答
0

如果存储为美分数,则将其格式化为 afloat然后除以 100。

于 2012-05-31T12:59:42.970 回答
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);
  }
}
于 2012-05-31T13:22:05.087 回答