printf%f小数点后只有2个数字?

时间:2011-08-25 20:57:57

标签: java

在我的printf中,我需要使用%f,但我不确定如何截断到2位小数:

实施例: 获得

3.14159

打印为:

3.14

8 个答案:

答案 0 :(得分:84)

使用此:

printf ("%.2f", 3.14159);

答案 1 :(得分:12)

您可以使用以下内容:

printf("%.2f", number);

如果您需要将字符串用于打印输出以外的其他内容,请使用NumberFormat类:

NumberFormat formatter = new DecimalFormatter("#.##");
String s = formatter.format(3.14159265); // Creates a string containing "3.14"

答案 2 :(得分:5)

System.out.printf("%.2f", number);

但是,这会将数字四舍五入到你提到的最接近的小数点。(在你的情况下,你将获得3.14,因为舍入3.14159到2小数点将是3.14)

由于函数 printf 会对数字进行舍入,因此其他一些数字的答案可能如下所示,

System.out.printf("%.2f", 3.14136); -> 3.14
System.out.printf("%.2f", 3.14536); -> 3.15
System.out.printf("%.2f", 3.14836); -> 3.15

如果您只需要截断十进制数并将其限制为k十进制数而不进行舍入,

假设k = 2。

System.out.printf("%.2f", 3.14136 - 0.005); -> 3.14
System.out.printf("%.2f", 3.14536 - 0.005); -> 3.14
System.out.printf("%.2f", 3.14836 - 0.005); -> 3.14

答案 3 :(得分:3)

尝试:

printf("%.2f", 3.14159);

参考:

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

答案 4 :(得分:3)

Formatter类中所述,您需要声明精度。在你的情况下%.2f

答案 5 :(得分:3)

使用此

printf ("%.2f", 3.14159);

答案 6 :(得分:1)

你可以试试 printf(“%。2f”,[double]);

答案 7 :(得分:0)

我建议用printf学习它,因为在很多情况下,这将足以满足您的需求,您不需要创建其他对象。

double d = 3.14159;     
printf ("%.2f", d);

但如果你需要四舍五入,请参阅这篇文章

https://stackoverflow.com/a/153785/2815227