Java 为什么在将浮点数(介于0和1之间)转换为字符串时不使用零

Java 为什么在将浮点数(介于0和1之间)转换为字符串时不使用零,java,oracle,floating-point,Java,Oracle,Floating Point,在Oracle数据库中,我将数字0.5存储在一列中,格式为数字(17,2)。 我使用Java程序(使用mybatis)读取它,并将其存储为实体对象的字符串字段。这个字符串字段的值是“.5”,而不是我期望的“0.5” 我知道“.5”是浮点数的标准表示形式,在大多数编程语言中可以直接转换为数字0.5。但当它显示在网页上时,它并不是我想要的。当然,只要检查第一个字母是否为“.”,我就可以随时转换为“0.5”,我认为这很简单,很容易忘记 我还可以使用Oracle函数指定将数字转换为字符串的格式。但是TO

在Oracle数据库中,我将数字0.5存储在一列中,格式为数字(17,2)。 我使用Java程序(使用mybatis)读取它,并将其存储为实体对象的字符串字段。这个字符串字段的值是“.5”,而不是我期望的“0.5”

我知道“.5”是浮点数的标准表示形式,在大多数编程语言中可以直接转换为数字0.5。但当它显示在网页上时,它并不是我想要的。当然,只要检查第一个字母是否为“.”,我就可以随时转换为“0.5”,我认为这很简单,很容易忘记

我还可以使用Oracle函数指定将数字转换为字符串的格式。但是TO_CHAR()函数使用格式模式作为参数,使输出字符串为固定长度,或者不使用格式参数将0.5打印为“.5”。这两种行为都不是我想要的。我只想要一种“按原样”转换数字的方法。但甲骨文的“按现状”方式并不是我想要的

所以我想问:


处理此问题的更好方法是什么?

您不应该将数字的值与其表示形式混淆

0.5
0.5
1/2,
2-1
334/668
0.12
和0000000.50000000000
都是完全相同的值


如果希望以某种方式格式化该值,则需要在将该值转换为字符串时指定该格式。

但是,我不熟悉
mybatis
, 你不能把它读成双精度的,然后用十进制格式化程序格式化吗


DecimalFormat df=新的DecimalFormat(“0.00”);

格式(编号)

我要问的是,当从源代码将值转换为字符串时(在这种情况下,是Oracle数据库或mybatis,因为是Oracle或mybatis提供了转换内容),如何指定格式?您使用什么Java程序读取它?如何将其存储为实体对象的字符串字段?为什么?它应该是一个
double
或者更可能是一个
BigDecimal
@EJP是的,最后我们将它存储为BigDecimal。那么,我如何选择一条评论作为最佳答案呢?