浮点到小十进制

时间:2012-06-30 12:57:30

标签: java

我必须编写一个符合以下要求的程序:

  1. 我有一个float类型的变量,比如说float a = 3333.333f;

  2. 我有一个int类型的变量,比如int b = 9999;

  3. 当我在计算器中执行* b时,结果将是33329996.667

    将小数位四舍五入到2位后,我想在java中将值打印为33329996.67。我尝试使用long,double,float,big decimal,但无法成功。

    任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

float只有7位数的精度,因此对于超过7位的结果来说,它不是一个好的选择。 double精度高达16位,是更好的选择。

double a = 3333.333;
int b = 9999;
System.out.printf("%.2f", a * b);

打印

33329996.67

答案 1 :(得分:0)

要确定逗号之后的位数,您必须应用一个小技巧:

首先将逗号向右移动以获得您想要的数字位数,然后剪切整数,例如使用Math.ceil(float f)然后将逗号移回左侧。

这将说明:

float f = 33329996.667;

float f2 = Math.ceil((f * 100)) / 100;

f2现在的值为33329996.67。

希望这有帮助。

编辑:格式化看看here