gpt4 book ai didi

java - 使用最大字符数格式化数字

转载 作者:行者123 更新时间:2023-11-30 10:53:10 25 4
gpt4 key购买 nike

我将数字放入 JTable 中。如果我输入的数字太长,它会被省略号截断。我想覆盖此行为,以便对数字进行格式化以使其适合单元格。这将涉及将某些数字放入科学计数法中。我也不想要前导零或尾随零;如果数字不是单元格的整个宽度,则可以接受。

String#substring(int, int) 不起作用,因为它不适用于科学记数法或会丢失信息 0.0000000000000001 将变为 0 而不是 1e-16.

%g 格式的 String#format(String, Object...) 不起作用,因为它会留下尾随/前导零,并且不在数字计数中包含科学记数法。

我也查看了 DecimalFormat ,但找不到任何允许设置字符数的内容。

预期行为的几个示例(最大字符数为 11):

3 -> 3
0.0000000000000001 -> 1e-16
1234567891011121314 -> 1.234568e18
3.1415926535897932384626433832 -> 3.141592654
0.00010001000100010001 -> 0.00010001

我怎样才能做到这一点?

提前致谢!

最佳答案

这可能对您有所帮助,它的灵感来 self 在评论中链接的帖子。这将格式化字符串并删除前导零。

主要内容

String[] nums = {"000000003","0.000000000000001","1234567891011121314","3.1415926535897932384626433832","0.00010001000100010001"};
for (int i = 0 ; i < nums.length ; i++){
System.out.println(format(nums[i].replaceAll("^0*", "")));
}

格式化方法

public static String format(String s){
if (s.length() <= 11) return s;
return String.format("%6.5e", Double.valueOf(s));
}

输出

3
1,00000e-15
1,23457e+18
3,14159e+00
1,00010e-04

关于java - 使用最大字符数格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34121744/

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