-2

对于学校的一个项目,我必须编写一个 java 程序来从数据库中检索数据。

这是我的代码:

import java.text.*;
import java.util.*;
public class Tijdstip
{
    public Tijdstip()
    {
    }
    public double testTijd(String tijdstip1)
    {
        // splitting the time
        String[] tokens = tijdstip1.split("\\s+");
        int hours = Integer.parseInt(tokens[0]);
        int minutes = Integer.parseInt(tokens[1]);  
        //returning the time
        double result = hours + ((double)minutes/100); 
        return result;      
    }
}

我将时间填写为字符串,例如:“7 10”,意思是上午 7:10,它必须返回像 7.10 这样的双精度值,但它返回 7.1,我该如何让它返回 7.10 而不是 7.1?

4

5 回答 5

2

试试这个

new DecimalFormat("#.00").format(result);
于 2013-10-17T11:20:38.447 回答
2

您需要了解数字的表示方式和显示方式之间的区别。7.1 和 7.10 之间没有数字差异;没有办法让第一而不是另一个。您可以使用格式类中的输出格式将 7.1显示为 7.10。

作为一个附带问题:在任何大小的程序中将其存储为双精度都是一个坏主意。有许多表示时间的类,它们都考虑到时间划分的非十进制性质。双打不这样做。

于 2013-10-17T11:21:32.593 回答
1

简短的回答是,如果您必须将结果保持为双精度,则无法执行此操作。double 对前导零或尾随零一无所知。只有当结果被格式化为字符串时,您才能执行此操作。例如,String.format("%.2f", 7.1)给出字符串"7.10"。每次显示数字时,您都可以轻松地进行这种格式化,但不能让数字本身记住多余的零。

于 2013-10-17T11:23:50.030 回答
0

当您返回 double 时,如果它为零,它将始终截断您的最后一个数字。所以让它成为一个字符串并返回

于 2013-10-17T11:19:09.013 回答
-1

如果您需要在小数点后只有两位数字的双精度值,您可以尝试以下操作:

double d = 1.164444;       
double r = Math.rint(d * 100)/100;
System.out.println(r);
于 2013-10-17T11:23:22.267 回答