我想生成一个(非本地化)字符串,表示 double 到“n”位小数,最好四舍五入。例如。精确到小数点后四位,1.234567
-> "1.2346"
我知道我可以使用 BigDecimal
、DecimalFormat
或 String.format()
来做到这一点,但在我的项目中我受到限制并且无法使用它们或任何第三方库。是否可以编写一个简单的函数来完成它?怎么办?
更新(更多细节):提出这个问题的原因是我想要一个在 GWT 和 Java 中使用相同代码的解决方案,并且需要最少量的代码和库。至关重要的是,格式化的数字不会根据浏览器的区域设置而改变(例如,当法国用户运行它时,我不想要 "1,2346"
)。
在 GWT 中,我编写了这个 Javascript 包装函数:
/**
* Convert a double to a string with a specified number of decimal places.
* The reason we need this function is that by default GWT localizes
* number formatting.
*
* @param d double value
* @param decimalPlaces number of decimal places to include
* @return non-localized string representation of {@code d}
*/
public static native String toFixed(double d, int decimalPlaces) /*-{
return d.toFixed(decimalPlaces);
}-*/;
我想用一些简单的Java替换它,这样我就可以在客户端和服务器上使用相同的代码。
public static String toFixed(double d, int decimalPlaces) {
// TODO
}
最佳答案
由于您使用的是 GWT,因此如果您第一次调用 NumberFormat.setForcedLatinDigits(true)
,则可以使用 NumberFormat
强制使用拉丁数字和分隔符。
如果您想要拉丁默认值以外的特定区域设置,则必须创建一个扩展 NumberFormat
并覆盖 getFormat
的类来调用 protected NumberFormat
constructor并提供 NumberConstants
实现
关于java - 手动格式化 Java double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345036/