Java 限制双精度数字的聪明方法是什么?

Java 限制双精度数字的聪明方法是什么?,java,algorithm,Java,Algorithm,我必须管理以下范围内的双打: 从0000001到999.999999999 我想要达到的是减少这个数字,只考虑6个更重要的数字 这意味着对于数字:100.000123 我想得到100.000 鉴于编号:12123456 我想得到121234 对于0123456 我想获得0123456 对于0'000001 我想获得0'000001 有什么聪明的方法可以做到吗? 谢谢 我相信有一些聪明的方法可以使用regex来实现这一点,但这里有一种低效的方法: double d = ... String s

我必须管理以下范围内的双打:

0000001
999.999999999

我想要达到的是减少这个数字,只考虑6个更重要的数字

这意味着对于数字:
100.000123
我想得到
100.000

鉴于编号:
12123456
我想得到
121234

对于
0123456
我想获得
0123456

对于
0'000001
我想获得
0'000001

有什么聪明的方法可以做到吗?
谢谢

我相信有一些聪明的方法可以使用regex来实现这一点,但这里有一种低效的方法:

double d = ...

String s = Double.toString(d);

s = s.substring(0, Math.min(s.startsWith("0") ? 8 : 7, s.length()));

d = Double.parseDouble(s);

使用现有的格式化程序应该是可能的,我将很快进行研究,如果发现任何问题,将更新此答案。

((long)(myDouble*1000000))/10000000000d?
Hmm,您为什么要这样做?你本质上是想消除一些双重标准的准确性?你的问题只包含要求-它并没有显示出你方面为自己解决这个问题所做的任何努力。请添加您对此问题的尝试-因为此网站不是免费的“我们为您(家庭)工作”服务。除此之外:请转到第页了解如何/问什么。Thanks@Bohemian,您的解决方案不起作用,我认为。。。ThomasCook,确切地说,出于演示的原因,我想降低一些准确性。阿兹罗,我不同意你的观点。我不想让我失败的回答产生偏见。可能重复感谢雅各布,因为这个问题已经被否决和批评,我在这里做了另一个:更准确的描述。否决的问题不是打开另一个问题的借口:P