我必须编写一个具有以下要求的程序:
我有一个浮点类型的变量,比如 float a = 3333.333f;
我有一个 int 类型的变量,比如 int b = 9999;
当我在计算器中执行 a*b 时,结果将是 33329996.667
将小数四舍五入到 2 位后,我想在 java 中将该值打印为 33329996.67。我尝试了 long、double、float、big decimal,但无法成功。
谁能帮我解决这个问题?
我必须编写一个具有以下要求的程序:
我有一个浮点类型的变量,比如 float a = 3333.333f;
我有一个 int 类型的变量,比如 int b = 9999;
当我在计算器中执行 a*b 时,结果将是 33329996.667
将小数四舍五入到 2 位后,我想在 java 中将该值打印为 33329996.67。我尝试了 long、double、float、big decimal,但无法成功。
谁能帮我解决这个问题?
float
只有 7 位精度,因此对于超过 7 位的结果,它不是一个好的选择。double
精度高达 16 位,是更好的选择。
double a = 3333.333;
int b = 9999;
System.out.printf("%.2f", a * b);
印刷
33329996.67
要确定逗号后的位数,您必须应用一个小技巧:
首先将逗号右移以获得您想要的位数,然后使用 Math.ceil(float f) 剪切整个数字,然后将逗号移回左侧。
这将说明:
float f = 33329996.667;
float f2 = Math.ceil((f * 100)) / 100;
f2 现在的值为 33329996.67。
希望这可以帮助。
编辑:对于格式化看看这里