如何解决格式化双精度字符串时不使用科学计数法
我有双重。 double foo = 123456789.1234;
。我想将foo
转换为字符串。 String str = foo+"";
。但是现在foo
等于“ 1.234567891234E8”。有没有一种方法可以将foo
转换为没有科学符号的字符串?
我尝试过
String str = String.format("%.0f",foo);
但这只是删除小数点。它将str
设置为“ 123456789”;
我尝试过
String str = (new BigDecimal(foo))+"";
但是,这会失去准确性。将str
设置为“ 123456789.1234000027179718017578125”;
解决方法
仅使用%f
而不是%.0f
。
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
double foo = 123456789.1234;
String str = String.format("%f",foo);
System.out.println(str);
// If you want to get rid of the trailing zeros
str = new BigDecimal(str).stripTrailingZeros().toString();
System.out.println(str);
}
}
输出:
123456789.123400
123456789.1234
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。