Java中灵活的数字格式

发布于 2024-12-09 04:15:41 字数 193 浏览 0 评论 0原文


我有一个问题,如何编写代码,根据条件使用不同的十进制数字格式将双数转换为字符串。
例如
1)如果整数位数<; N:使用数字格式为####(N次).###(3个小数位)
2) 如果整数位数>=N:使用科学数字格式0.###E0 我只是想到手动计算整数位数(除以10)。然后使用if/else。

还有其他方法吗?

I have a question how to write code that will convert double numbers into string using different decimal number formats based on criteria.
For example
1) if number of integer digits < N: use number format as ####(N times).### (3 fraction digits)

2) if number of integer digits >=N: use scientific number format 0.###E0
I only come out with idea with manually counting integers digits(by dividing by 10).Then use if/else.

Is there any other way to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡墨 2024-12-16 04:15:41

您可以使用类 NumberFormat。当然,您必须使用条件来解释您的两种情况。

You could use the class NumberFormat. You have to use condition to account for your two cases, of course.

终弃我 2024-12-16 04:15:41

虽然 DecimalFormat JavDoc 有一个“科学记数法”部分,这似乎不符合您的要求。也许您可以摆脱 JavaDoc 中描述的“工程符号”?

如果没有,那么最简单的方法是使用两种不同的格式,如下所示:

private DecimalFormat df1 = new DecimalFormat("#.###");
private DecimalFormat df2 = new DecimalFormat("0.###E0");

public String formatDouble(double d) {
    if( Math.abs(d) < 1000 )
        return df1.format(d);
    else
        return df2.format(d);
}

Although the DecimalFormat JavDoc have a section "Scientific Notation" this doesn't seem to match your requirements. Perhaps you can get away with the "engineering notation" described in the JavaDoc?

If not, then the simplest way is to use two different formats like this:

private DecimalFormat df1 = new DecimalFormat("#.###");
private DecimalFormat df2 = new DecimalFormat("0.###E0");

public String formatDouble(double d) {
    if( Math.abs(d) < 1000 )
        return df1.format(d);
    else
        return df2.format(d);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文