Java 无科学符号的十进制格式
我有这样一个十进制格式:Java 无科学符号的十进制格式,java,floating-point,notation,decimalformat,Java,Floating Point,Notation,Decimalformat,我有这样一个十进制格式: DecimalFormat df = new DecimalFormat("#,###.###"); 然后我有3种方法,它们只返回时间、电位和电流的浮点值,最后两种方法都有很多小数。所以我试图得到一个输出消息,其中包含3个格式化的值,所以: System.out.println("t="+df.format(getTime())+"(s), v="+df.format(getPotential())+"(V), i="+df.format(getI())+"(A)")
DecimalFormat df = new DecimalFormat("#,###.###");
然后我有3种方法,它们只返回时间、电位和电流的浮点值,最后两种方法都有很多小数。所以我试图得到一个输出消息,其中包含3个格式化的值,所以:
System.out.println("t="+df.format(getTime())+"(s), v="+df.format(getPotential())+"(V), i="+df.format(getI())+"(A)");
时间从0到10秒不等,没有任何小数点,直到达到10秒为止,它看起来还可以。然后显示1E+1。我只是不明白为什么,因为我读过API,如果在十进制格式中不使用“E”字符,它就不应该是科学记数法
此外,电势从0变为某个特定值,使用3位小数。看起来不错,但从0到0.01,它显示为4位小数,最后一位始终为0
对这种DecimalFormat行为有何解释?我做错了什么?在您的情况下使用printf可能会更简单:
System.out.printf("t=%d(s) v=%.2f(V) i=%.2f(A)\n", getTime(), getPotential(), getI());
在您的案例中使用printf可能会更简单:
System.out.printf("t=%d(s) v=%.2f(V) i=%.2f(A)\n", getTime(), getPotential(), getI());
请提供SSCCE。请在不应用十进制格式的情况下提供函数的输出,该格式将(变化非常快):0(s)、0.000010254(v)、0.000040137(A)0(s)、0.000010379(v)、0.0000380921(A)。。。等等,可能还有更多的小数。很难提供准确的输出,我认为这对这个问题毫无意义。请提供一个SSCCE。请在不应用十进制格式的情况下提供函数的输出,该格式将(变化非常快):0(s)、0.000010254(v)、0.000040137(A)0(s)、0.000010379(v)、0.0000380921(A)。。。等等,可能还有更多的小数。很难提供精确的输出,而且我认为这对这个方法给我带来问题的问题一点也不感兴趣,这就是为什么我尝试了新的格式化方法。事实上,这是可行的,但是程序的不同部分出现了问题,这些问题与程序的不同部分没有直接关系,所以我更喜欢另一种方法。这种方法给了我问题,这就是为什么我尝试新的格式化方法。事实上,这是可行的,但与程序不同部分的问题没有直接关系,所以我更喜欢另一种方式。