gpt4 book ai didi

java - 将 float 转换为字符串时避免舍入数字

转载 作者:行者123 更新时间:2023-12-01 18:57:21 24 4
gpt4 key购买 nike

将 float 转换为字符串时,我需要避免舍入数字,我需要数字完全相同。

此时如果我这样做:

String value =  String.valueOf(1234567.99);

值= 1234568.0,所以我需要转换后的值= 1234567.99。

最佳答案

1234567.99 无法精确表示为 float 。最接近的 float 实际上等于 1234568。

如果您想要更高的精度,可以使用 double :1234567.99d 将达到您的预期。

您可以运行这个简单的测试来检查它(它是用 Java 编写的,但可以通过替换 println 轻松地在 Android 上转置):

public static void main(String[] args) {
float f = 1234567.99f;
double d = 1234567.99d;
System.out.println(new BigDecimal(f));
System.out.println(new BigDecimal(d));
}

打印:

1234568
1234567.98999999999068677425384521484375

注意:String.valueOf(double) 确实将 double 舍入为同一 double 的另一种表示形式(小数位数更少)。换句话说,正如您在上面看到的,1234567.99d 不能表示为 double 型,最接近的 double 型是 1234567.98999999999068677425384521484375。但是 String.valueOf 计算出来并使用该 double 的第一个表示形式(只有 2 位小数),因为根据语言规范,它们实际上是相同的 double 。

关于java - 将 float 转换为字符串时避免舍入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13479943/

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