java - 手动格式化 Java double

标签 java gwt

我想生成一个(非本地化)字符串,表示 double 到“n”位小数,最好四舍五入。例如。精确到小数点后四位,1.234567 -> "1.2346"

我知道我可以使用 BigDecimalDecimalFormatString.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/

相关文章:

java - 无法执行目标 gwt-maven-plugin :2. 5.1:在项目源或资源中找不到 gwt 模块名称(在 eclipse 中工作,但 maven 安装失败)

java - 可以使用蓝/绿部署部署 GWT 应用程序吗?

css - 如何从 GWT 小部件访问常规 CSS?

java - java中的深度 copy-and-swap 子树

java - 如何在构造函数上设置切面

java - 获取具有目标总和的数组子集的算法无法正常工作

html - 面板漂浮在 GWT DialogBox 上

gwt - UiBinder 与 ToggleButton 配合使用

java - 无法从 spring-web 创建 RestTemplate() 实例

Java:优化哈希集以进行大规模重复检测