我怎么可能只有前5个数字?
12345.6789 --> 12345
1.23456789 --> 1.2345
0.123456789 --> 0.1234
我尝试过不同的方法,比如把数字乘以10和x的幂,但是x似乎只影响小数点,设置为x小数点
使用BigDecimal
:
static BigDecimal convert(BigDecimal number, int significant) {
var move = significant - number.precision() + number.scale();
return number
.movePointRight(move)
.setScale(0, RoundingMode.DOWN)
.movePointLeft(move);
}
类似于转换(BigDecimal.valueOf(1.23456789),5)
或转换(新的BigDecimal(“1.23456789”),5)
返回BigDecimal:1.2345
这里有一个办法。
double[] v = {12345.6789,
1.23456789,
0.123456789};
for (double d : v) {
String s = Double.toString(d);
int i = s.indexOf('.');
i = i < 0 || i >= 5 ? 5 : 6;
System.out.println(s.substring(0,i));
}
印刷品
12345
1.2345
0.1234
正如其他人评论的那样,一种方法是使用字符串操作。可能看起来不优雅,但它完成了任务。
定义一些输入。
List<Double> doubles =
List.of(
12345.6789 ,
1.23456789 ,
0.123456789
)
;
循环这些输入。对于每个输入,生成一个字符串。如果找到了FULL STOP,请取前六个字符。如果没有,请取五个。如果FULL STOP落在最后一位,例如在我们的第一个示例输入中,请删除。
for( Double d : doubles )
{
String s = String.valueOf( d ) ;
String s5 = s.substring( 0 , s.contains( "." ) ? 6 : 5 ) ;
if( s5.endsWith( "." ) ) { s5 = s5.substring( 0 , s5.length() - 1 ) ; } // Drop FULL STOP in last place.
System.out.println( s5 ) ;
}
查看此代码在IdeOne上的实时运行。通用域名格式。
12345
1.2345
0.1234
注意:您可能需要将逗号(,
)作为十进制分隔符,而不是句号(,
)字符,从而实现国际化。
String s5 = s.substring( 0 , ( s.contains( "." ) || s.contains( "," ) ) ? 6 : 5 ) ;
我一直在获取输出Student@42a57993.我想打印学生[0]中的结果,我还想打印学生数组中的所有元素,有人能帮我告诉我出了什么问题吗?我有一个主要的方法类是Client,另一个是Student。
如何获取用户当前所在的路由?我需要它来隐藏导航栏链接,如果用户当前在链接通向的路线上。
一种通用方法,可以返回两个参数之间的随机整数,就像ruby使用时所做的那样。 有什么建议吗?
如何获取已设置为ImageView的可绘图文件的名称?
我在Firestore有一个项目: 我需要获取数组“Personal”并在列表视图中显示它,我在这里看到一个类似的例子,从Firestore获取一个ArrayList和文档名,我尝试了这个解决方案。。。 Android Studio不显示错误,但试着运行应用程序,结果停止了,有人能帮我吗?
我使用Selenium,需要无休止地等待页面加载(因为加载需要几个小时),然后解析其中的数据。我该怎么做? 我使用这样的一些代码: