我在尝试将它们存储在float变量中时遇到了java中的大数字问题。
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class testConversion {
public static void main(String[] args) {
String s = "135598877.50";
Float f = Float.parseFloat(s);
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(f);
System.out.println(df.format(f));
}
}
OUTPUT:
1.3559888E8
135598880.00
此计划的输出为135598880.00
而非135598877.50
。
为什么会发生这种事情以及处理此问题的最佳方法是什么?我根本不想截断/舍入。
此致 Kaddy
答案 0 :(得分:4)
答案 1 :(得分:1)
尝试使用Double而不是Float。
import java.text.DecimalFormat;
public class Doubler {
public static void main(String[] args) {
String s = "135598877.50";
Double f = Double.parseDouble(s);
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(f);
System.out.println(df.format(f));
}
}
输出:
1.355988775E8
135598877.50
答案 2 :(得分:0)
看起来你对使用BigDecimal有正确的想法,这样就可以了;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class testConversion {
public static void main(String[] args) {
String s = "135598877.50";
BigDecimal f = new BigDecimal(s);
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(f);
System.out.println(df.format(f));
}
}