我希望在以下范围内管理号码:
从0,001
到999,999
对于表示原因,我想删除一些准确性,只保留该数字的3个最重要的数字。
对于数字123,12
,我希望结果为123
。
对于数字12,123
,我希望结果为12,1
。
对于数字0,001
,我希望结果为0,001
。
我想到的最好的解决方案是将数字转换为字符串,然后以这种方式再次转换为double:
number = number*1000;
String s = new String(number);
s = s.substr(0, 3) + "000";
number = Double.parseDouble(s);
number = number/1000;
这可以完成这项工作,但它看起来既表现不佳又不优雅。 还有更聪明的选择吗? 谢谢!
答案 0 :(得分:1)
这是一个有点复杂的答案,不需要使用任何转换为2
:
select * from [sheet_Name$] where rowid=2
输出:datagridview
基本上它将String
乘以10,直到达到1000以下的最大值(最大值为999.999),跟踪它乘以的次数。然后执行final int numDigits = 3;
double d = 12.123;
int counter;
for (counter = 0; counter < numDigits && d < Math.pow(10, numDigits - 1); counter++) {
d *= 10;
}
d = Math.floor(d);
d /= Math.pow(10, counter);
System.out.println(d);
函数以消除小数点右侧的任何精度。最后,我们将数字除以10 12.1
次,这为我们提供了前3个有效数字。
答案 1 :(得分:1)
也许使用this RegEx使代码更简洁?
^[,0]{0,6}(\d{3}|\d{2},\d|\d,\d{2})