为什么printf导致我的程序崩溃

问题描述:

你好,我是一个初学者,我试图在java中使用printf打印一个小数点后1位的值;但是在转换时出现错误。这是错误的行。为什么printf导致我的程序崩溃

System.out.printf(" us Ratio = %.1f us/compare \n " , elapsedTime/1000); 
+0

是什么'elapsedTime'?它是一个浮点数,整数,字符串?你确定它不是'null'吗?你可以在这个调用之前粘贴异常堆栈跟踪和一些代码来演示发生了什么? – SnakeDoc 2014-10-04 20:59:16

+2

你至少看过错误信息吗?你不认为它可能包含有用的信息,有助于诊断问题吗?如果是这样,你为什么不发布它? – 2014-10-04 21:02:18

这个只要改变你的代码:

System.out.printf(" us Ratio = %.1f us/compare \n ", (float)(elapsedTime/1000)); 

你越来越错误,因为你没有提供float作为参数,其中需要。
您必须使用一个表达式,该表达式将隐式转换为float或如上所示进行明确转换。

可以使用double以及这里

+0

工作非常感谢。 – PedroIt 2014-10-04 21:05:54

+0

当您找到有用或最好的答案时,您可以通过点击打勾来接受答案。这样回答者将获得15个声望,你将获得2。 – afzalex 2014-10-04 21:09:03

定义elapsedTime为float

elapsedTime = 1f;

然后它会工作。或者你也可以投的(elapsedTime/ 1000)float

喜欢的东西的结果 - ((float) (elapsedTime/ 1000))

+0

一个hipfire猜测?如果是这样的话,他也可以投中。 – SnakeDoc 2014-10-04 21:01:12

+0

@SnakeDoc是的.. – Tirath 2014-10-04 21:16:52