gpt4 book ai didi

java - 手动格式化 Java double

转载 作者:行者123 更新时间:2023-12-01 11:57:18 25 4
gpt4 key购买 nike

我想生成一个(非本地化)字符串,表示 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com