我正在尝试使用setfloat
在sql server数据库中输入值jtdsproc.setFloat(12,nb.getOpenAmount());
我的金额是1.20 但在数据库中它进入1.199999523 我只想输入到2位数,但这个设置浮动制作问题 如何输入浮点值使其达到小数点后两位。
我正在使用Jtds Library连接到sql server
答案 0 :(得分:2)
使用浮点数无法准确表示数字1.2。这是因为1.2 = 6/5的分母不是2的幂。通常你会设计你的数据库方案来存储固定数量的小数,如果这些事情很重要的话。在这种情况下,即使Java传输的值不完全等于1.2,数据库仍然会存储正好为1.2的值。
作为替代方案,您可以尝试将值作为字符串传输。您可以使用DecimalFormat
生成具有固定位数的表示,然后将该字符串传输到数据库,并让它处理到数据库服务器上的内部表示的转换。这项工作是否更好取决于数据库服务器是否具有更高的精度和单精度浮点数。如果没有,存储的号码可能与以前相同。