使用最多五位数字格式化双精度值,如有必要,四舍五入小数位

2023-12-24

I have double我想转换成的值String具有以下格式限制的值:

分数位数 = max( 0, 5 - 整数位数 )

本质上,如果可能的话,我想将位数保留为 5,并在必要时四舍五入小数位。例如:



 float          String
-------------------------
     1               1
   100             100
100000          100000
 99999           99999
 99999.99        99999
  9999.99         9999.9
   999.99          999.99
    23.34324        23.343
  

我研究过使用十进制格式 http://docs.oracle.com/javase/6/docs/api/index.html?java/text/DecimalFormat.html但据我所知,它并没有完全实现我所追求的目标。

它允许使用设置最大小数位数setMaximumFractionDigits()但据我所知,我必须计算整数位数并自己执行上述计算。

所以基本的问题是是否有一个好的、干净的内置方法来以这种方式格式化数字。


public class SignificantFormat {

    public static String formatSignificant(double value, int significant)
    {
        MathContext mathContext = new MathContext(significant, RoundingMode.DOWN);
        BigDecimal bigDecimal = new BigDecimal(value, mathContext);
        return bigDecimal.toPlainString();
    }

    public static void main(String[] args) {
        double[] data = { 1, 100, 100000, 99999, 99999.99, 9999.99, 999.99, 23.34324 };
        for(double d: data){
            System.out.printf("Input: %10s \tOutput: %10s\n", Double.toString(d), formatSignificant(d, 5));
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用最多五位数字格式化双精度值,如有必要,四舍五入小数位 的相关文章

随机推荐

  • 无法达到最佳性能

    我正在努力达到每个人的最佳表现SM从下面的代码 峰值位于 25 GFlops GTX275 GT200 Arch 之间 此代码最多提供 8 GFlops global void new ker float x int index threa
  • 适用于 GAE 的 Python 无头浏览器

    我正在尝试将 Angular js 客户端与 Google Appengine 上的 webapp2 一起使用 为了解决 SEO 问题 我们的想法是使用无头浏览器在服务器端运行 javascript 并将生成的 html 提供给爬虫 有没有
  • 如何覆盖 Nixos configuration.nix 中的 2(两个)包

    我的configuration nix 中有一些需要覆盖的包 所以我写的代码如下 nixpkgs config allowUnfree true packageOverrides pkgs rec mumble pulse audio mu
  • 在 JavaScript 中获取字体规格?

    我目前正在开发一个使用 HTML5 画布作为渲染目标的 JavaScript 项目 为了使我的代码能够很好地与我提供的 严格指定的 接口配合使用 我需要能够获取一种字体并提取该字体的上升和下降高度 这将使客户能够更准确地定位文本 我知道我可
  • 如何去掉多余的双引号?

    在格式错误的 csv 文件中 有一行数据带有额外的双引号 例如最后一行 Name Comment Peter Nice singer Paul Love folk songs 如何删除周围的双引号folk并将字符串替换为 Name Comm
  • 在 3NF 中找到关系,但在 BCNF 中找不到关系

    我一直在阅读许多不同的资料来了解如何区分 3NF BCNF 中的关系 到目前为止 这是我的理解 我将使用这种关系作为例子 R A B C D E and F A gt B B C gt E E D gt A 首先我们必须找到关系的关键 我用
  • 你如何解析悬空的 else ?

    我正在为 C 语言编写一个编译器 我只剩下一个问题需要解决 如何处理悬空的 else 原来的规则是这样的 A gt if 表达式 语句 if 表达式 语句 else 语句 摆脱左递归后 A gt if 表达式 语句 B B gt else
  • 如何有效地比较两个无序列表(而不是集合)?

    a 1 2 3 1 2 3 b 3 2 1 3 2 1 a 和 b 应该被认为是相等的 因为它们具有完全相同的元素 只是顺序不同 问题是 我的实际列表将由对象 我的类实例 组成 而不是整数 O n The 柜台 https docs pyt
  • 如何绘制多列 CSV 文件?

    我对 R 很陌生 所以请原谅我问一个可能很愚蠢的问题 我有一个多列 CSV 纯逗号分隔 无引号 文件 其中第一行是标题 第一列是连续的整数索引 其他 17 列是函数的浮点值 任务是在同一张图表上绘制所有 17 条线 具有相同的轴 听起来很简
  • 在不使用 startwith 函数的情况下从字符串中间提取特定单词?

    我正在尝试从列表中提取变量的名称 我已将列表声明为list end 并且在for循环中 我希望for循环读取列表中的每个字符串 如果在字符串中找到 int 则它从int开始并以list end结束 并且添加到空list variable d
  • 为什么这个渐进式 jpeg 不逐步加载?

    我的网站上有一些大图像 因此我将它们保存为渐进式 jpeg 这样用户应该可以在下载时看到正在发生的事情 但在下载整个 jpeg 之前的几秒钟内什么也没有显示 我究竟做错了什么 网站 大图应该很明显 http www heylookthats
  • Rails 5 白名单 css 属性用于清理助手

    我需要允许内联 style position absolute 输出由sanitize post content 我发现Rails 4 的文档 http apidock com rails v4 0 2 ActionView Helpers
  • WebSocket 版本和向后兼容性

    过去几天我一直在尝试 WebSocket 并且对这项非常酷的新技术有一些复杂的体验 我编写了一个简单的聊天客户端 它使用最新版本HTML5 实验室 http html5labs interoperabilitybridges com pro
  • 如何在java中使条形图中的条形从x轴开始? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 正如您在图片中看到的 图表中的条形从 x 轴下方开始 如何修复它以使其从 x 轴线开始 请建议我修复 我也会帮助知道我哪
  • WebRTC 视频流无法通过 http 工作

    我正在尝试使用 WebRTC Peer js 创建游戏 而且我无法通过 http 进行视频通话 也许它只能通过https 附 所有 我看到的 媒体通话的工作示例都使用 https 1 http cdn peerjs com demo vid
  • Spring R2dbc:有没有办法从postgresql数据库获取恒定流并处理它们?

    我想将 postgresql 中的表中新创建的记录作为实时 连续流获取 可以使用spring r2dbc吗 如果是这样 我有什么选择 Thanks 你需要使用pg notify并开始在上面列出 您想要看到的任何更改都应该包含在简单的触发器中
  • 将哈希数组转换为 json

    我想转换我创建的哈希数组 如下所示 while push ranks id gt id time gt time To JSON use JSON j new JSON print j gt encode json ranks gt ran
  • Recyclerview 滚动时自动更改项目位置

    在我的应用程序中 我有自定义适配器 当我滚动 RecyclerView 时 适配器有图像和文本 某些项目位置自动更改 public class MyPhotosAdapter extends RecyclerView Adapter
  • 如何在控制器中使用会话范围组件

    计数 java Component Scope value session proxyMode ScopedProxyMode TARGET CLASS public class Count Integer i public Count t
  • 使用最多五位数字格式化双精度值,如有必要,四舍五入小数位

    I have double我想转换成的值String具有以下格式限制的值 分数位数 max 0 5 整数位数 本质上 如果可能的话 我想将位数保留为 5 并在必要时四舍五入小数位 例如 float String 1 1 100 100 10