如何在java中自动设置精度

时间:2015-04-07 17:54:30

标签: java time precision

我正在尝试计算我写的程序的性能,但我遇到的情况是这个...

long start = System.currentTimeMillis();
my program....
long end = System.currentTimeMillis();
end = end-start;

/* Below are things I tried which doesn't work
*********prints (same number of 0 as specified in decimalformat********
NumberFormat formatter = new DecimalFormat("#0.0000");
System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
*********prints number but not able to put it in decimals ********
float time = end-start;
System.out.printf("%3.8f",time);
*/

我怎么能够这样做它打印0.000x时间而不打印0。 例如,如果程序在0.7毫秒内完成,则应显示0.0007秒

1 个答案:

答案 0 :(得分:0)

编辑:我忘了最初的目的:性能测量 如果它只是用于简单测量,那么您的实际代码就可以了。 你应该尝试寻找外部工具,如jvisualvm(包含在jdk中)或YourKit,如果你想要更精美和更先进的东西

您应该尝试使用SimpleDateFormat格式化最终结果。

 /**
 * Return date in specified format.
 * @param milliSeconds Date in milliseconds
 * @param dateFormat Date format 
 * @return String representing date in specified format
 */
public static String convertMilliSecondsToDate(long milliSeconds, String dateFormat)
{
    // Create a DateFormatter object for displaying date in specified format.
    DateFormat formatter = new SimpleDateFormat(dateFormat);

    // Create a calendar object that will convert the date and time value in milliseconds to date. 
     Calendar calendar = Calendar.getInstance();
     calendar.setTimeInMillis(milliSeconds);

     return formatter.format(calendar.getTime());
}

可以找到更多示例here

这是一个相当简单的解决方案,但您可以通过解析日期并查看精度并仅显示非空零件来尝试改进它。