Java 十进制和双精度
解析表示(可以是科学和财务格式) 为什么Sun选择了这种方法,而不是直接将double转换为String 附言:Java 十进制和双精度,java,formatting,double,Java,Formatting,Double,解析表示(可以是科学和财务格式) 为什么Sun选择了这种方法,而不是直接将double转换为String 附言: 更具体一些。为什么DecimalFormat在内部使用Double.toString()来格式化Double,而不是格式化Double本身的内部表示形式?DecimalFormat允许您为格式指定一个格式化模式,从而使您能够更好地控制格式。他可能会问“Double.toString(带一些参数)”将执行此任务,而不是使用DecimalFormat 我想原因可能是i18n。在某些地方,
更具体一些。为什么DecimalFormat在内部使用Double.toString()来格式化Double,而不是格式化Double本身的内部表示形式?DecimalFormat允许您为格式指定一个格式化模式,从而使您能够更好地控制格式。他可能会问“Double.toString(带一些参数)”将执行此任务,而不是使用DecimalFormat
我想原因可能是i18n。在某些地方,您可以键入1800.39。。而在其他地方,您可以键入1.800,39,我不是舒尔您所说的“直接转换”,但
toString()
始终只是调试信息!您不应该使用它在前端显示值。使用DecimalFormat
进行解析和格式化 对于金融应用程序,请改用BigDecimal,它可以控制舍入模式和精度 也许Sun遵循的是原则。你说的“直接转换”是什么意思?你能澄清一下你的问题吗?我不知道你说的“直接将双精度转换为字符串”是什么意思。在OpenJDK中,Double.toString()返回String.valueOf(value),其中value是原语Double。这就产生了Double.toString(d),它调用了新的FloatingDecimal(d).toJavaFormatString(),它最终完成了我所问的实际工作。为什么DecimalFormat在内部使用Double.toString()result来格式化Double,而不是格式化Double本身的内部表示形式。实际上,这个问题与任何格式化Double的应用程序有关。同意你的看法,但我想问一下DecimalFormat在内部格式化的方法。