首页 > Java > 在 Java 中如何实现双精度转换为使用半向上方法舍入的字符串的方法

在 Java 中如何实现双精度转换为使用半向上方法舍入的字符串的方法

上一篇 下一篇

我想要的是一种将双精度转换为使用半向上方法舍入的字符串的方法——即,如果要四舍五入的小数点为 5,它总是向上舍入到下一个数字。这是大多数人在大多数情况下期望的四舍五入的标准方法。

我还希望只显示有效数字——即不应该有任何尾随零。

我知道这样做的一种方法是使用该方法:String.format

String.format("%.5g%n", 0.912385);

返回:

0.91239

这很棒,但是它总是显示小数点后 5 位的数字,即使它们不重要:

String.format("%.5g%n", 0.912300);

返回:

0.91230

另一种方法是使用 :DecimalFormatter

DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);

返回:

0.91238

但是,如您所见,这使用半偶数舍入。也就是说,如果前一个数字是偶数,它将向下舍入。我想要的是这个:

0.912385 -> 0.91239
0.912300 -> 0.9123

在 Java 中实现这一目标的最佳方法是什么?

分割线

网友回答:

假设是 ,您可以执行以下操作:valuedouble

(double)Math.round(value * 100000d) / 100000d

这是 5 位精度。零数表示小数位数。

分割线

网友回答:

使用 ,显式设置 以处理半偶数圆角的问题,然后对所需的输出使用格式模式。setRoundingModeRoundingMode

例:

DecimalFormat df = new DecimalFormat("#.####");
df.setRoundingMode(RoundingMode.CEILING);
for (Number n : Arrays.asList(12, 123.12345, 0.23, 0.1, 2341234.212431324)) {
    Double d = n.doubleValue();
    System.out.println(df.format(d));
}

给出输出:

12
123.1235
0.23
0.1
2341234.2125

编辑:原始答案没有解决双精度值的准确性。如果您不太关心它是向上还是向下舍入,那很好。但是,如果要精确舍入,则需要考虑值的预期精度。浮点值在内部具有二进制表示形式。这意味着像 2.7735 这样的值实际上在内部没有该确切值。它可以略大或略小。如果内部值略小,则不会向上舍入到 2.7740。要纠正这种情况,您需要了解正在使用的值的准确性,并在舍入之前添加或减去该值。例如,当您知道您的值精确到 6 位时,要将值向上舍入一半,请将该精度添加到该值中:

Double d = n.doubleValue() + 1e-6;

要向下舍入,请减去精度。

分割线

网友回答:

new BigDecimal(String.valueOf(double)).setScale(yourScale, BigDecimal.ROUND_HALF_UP);

会给你一个.要从中获取字符串,只需调用 的 方法,或者调用 Java 5+ 的方法以获取纯格式字符串。BigDecimalBigDecimaltoStringtoPlainString

示例程序:

package trials;
import java.math.BigDecimal;

public class Trials {

    public static void main(String[] args) {
        int yourScale = 10;
        System.out.println(BigDecimal.valueOf(0.42344534534553453453-0.42324534524553453453).setScale(yourScale, BigDecimal.ROUND_HALF_UP));
    }

模板简介:该模板名称为【在 Java 中如何实现双精度转换为使用半向上方法舍入的字符串的方法】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 160次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-22
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信模板 单页式简历模板 企业网站 微信图片 微信文章 自适应 响应式 微信素材 html5 微信公众平台
您可能会喜欢的其他模板