Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 十进制和双精度_Java_Formatting_Double - Fatal编程技术网

Java 十进制和双精度

Java 十进制和双精度,java,formatting,double,Java,Formatting,Double,解析表示(可以是科学和财务格式) 为什么Sun选择了这种方法,而不是直接将double转换为String 附言: 更具体一些。为什么DecimalFormat在内部使用Double.toString()来格式化Double,而不是格式化Double本身的内部表示形式?DecimalFormat允许您为格式指定一个格式化模式,从而使您能够更好地控制格式。他可能会问“Double.toString(带一些参数)”将执行此任务,而不是使用DecimalFormat 我想原因可能是i18n。在某些地方,

解析表示(可以是科学和财务格式)

为什么Sun选择了这种方法,而不是直接将double转换为String

附言:
更具体一些。为什么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在内部格式化的方法。