Java中如何实现智能小数截除?

发布于 2024-10-04 00:22:05 字数 201 浏览 5 评论 0原文

我想实现或使用一些库来实现智能小数截止。

我的意思是我想得到: from 3.456432 -> 3.4、从0.0000023232432→ 0.000002 和从 0.000000000001 → 0.0(或类似的东西)。我需要这个功能来提供方便的用户 GUI。

因此我需要减少不等于零的位数。我需要保留 1-3 个最高有效数字,其他数字设置为零。

I want to implement or use some library for an intelligent decimal cut off.

I mean that I would like to get: from 3.456432 -> 3.4, from 0.0000023232432 -> 0.000002 and from 0.000000000001 -> 0.0 (or something like that). I need this feature for a convinient user GUI.

Thereby I need to reduce number of digits that are not equal to zero. I need to keep 1-3 most significant digits and other set to zero.

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

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

发布评论

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

评论(3

川水往事 2024-10-11 00:22:05

您是否看过 DecimalFormat API?

DecimalFormat 是一个具体的子类
格式化十进制的 NumberFormat
数字。它有多种功能
旨在使解析成为可能
并在任何区域设置中格式化数字,
包括对西方、阿拉伯语的支持,
和印度数字。它还支持
不同种类的数字,包括
整数 (123)、定点数
(123.4),科学记数法(1.23E4),
百分比 (12%) 和货币
金额(123 美元)。这些都可以
本地化。

Have you taken a look at the DecimalFormat API?

DecimalFormat is a concrete subclass
of NumberFormat that formats decimal
numbers. It has a variety of features
designed to make it possible to parse
and format numbers in any locale,
including support for Western, Arabic,
and Indic digits. It also supports
different kinds of numbers, including
integers (123), fixed-point numbers
(123.4), scientific notation (1.23E4),
percentages (12%), and currency
amounts ($123). All of these can be
localized.

许久 2024-10-11 00:22:05

如果有任何帮助,您可以使用以下方法将双精度数舍入到指定的有效位数。然而,标准 API 中没有功能以合理的方式输出结果:

private static double round(double v, int sigDigits) {
    double f = Math.pow(10, Math.ceil(Math.log10(Math.abs(v))) - sigDigits);
    return Math.round(v/f)*f;
}

If it is of any help, you can use the following method to round a double to a specified number of significant digits. There are however no functionality in the standard API to output the result in a reasonable manner:

private static double round(double v, int sigDigits) {
    double f = Math.pow(10, Math.ceil(Math.log10(Math.abs(v))) - sigDigits);
    return Math.round(v/f)*f;
}
ペ泪落弦音 2024-10-11 00:22:05

从 Java 5 开始,java.util 有一个 Formatter 类可以满足您的需要。

Since Java 5, java.util has a Formatter class which can do what you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文