我使用 DecimalFormat 类将数字格式化为字符串,反之亦然。
在我的数据库中,Java 双精度数以特定方式表示:例如 128.88 存储为“00012888”。为了实现这一点,我使用“00000.00”模式并删除“.”。格式化后的小数分隔符,这不是一个聪明的解决方案。
有没有办法告诉 DecimalFormat 不要使用任何小数分隔符?我可以让它理解代表十进制数的字符串中整数部分和小数部分在哪里吗?
我希望在转换之前不必进行乘法、除法、截断或四舍五入。 有没有一个神奇的模式可以做到这一点?或者 DecimalFormat 类没有那么灵活?
我准确地说我不能使用 String.format() 方法,因为我在 Java 1.4 平台上工作。
感谢您的帮助。
DecimalFormat
还不够强大,无法做到这一点。
你可以使用这样的方法:
double getD(String fixedWidthNumber) {
return Double.valueOf(fixedWidthNumber.substring(0,6)+"."+fixedWidthNumber.substring(6,8));
}
BigDecimal value = new BigDecimal("234.33");
DecimalFormat decFrm = new DecimalFormat("000.00");
char decSep = decFrm.getDecimalFormatSymbols().getDecimalSeparator();
String resultStr = decFrm.format(value).replace(Character.toString(decSep), "");
结果:3423433
没有有效的解决方案,因为 DecimalFormat 需要原始字符作为小数分隔符。
解决方法是将小数点分隔符设置为不常见的字符,然后将其替换为空字符串
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('X');
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setDecimalFormatSymbols(decimalFormatSymbols);
return decimalFormat.format(value).replace("X", "");
虽然不是很好,但已经完成了它的工作