如何在mysql中使用float数据类型避免科学数字格式?

时间:2011-11-02 06:12:53

标签: mysql hibernate spring

我正在使用mysql作为我的后端数据库,并使用hibernate和spring作为我的前端。我在许多表中使用浮点类型,只接受最多7位数,然后将值保存为科学数字格式,这是一个很大的问题,我不能使用double,因为它将反映大多数表格。

我尝试使用十进制格式,但它不起作用

protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) 
throws Exception{
    CustomDateEditor dateEditor = new CustomDateEditor(new format("dd/MM/yyyy"), true);
    binder.registerCustomEditor(Date.class,null, dateEditor);

    DecimalFormat decimalFormat = new DecimalFormat();
    DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    symbols.setDecimalSeparator('.');
    decimalFormat.setDecimalFormatSymbols(symbols);
    decimalFormat.setMaximumFractionDigits(2);

    binder.registerCustomEditor(Float.class, 
    new CustomNumberEditor(Float.class, decimalFormat, true));
}

任何人都可以告诉如何在不改变其类型的情况下避免浮动中的科学记数法。

1 个答案:

答案 0 :(得分:0)

没有“使用浮点数的科学数字格式”,只有当你(隐式或显式地)改变数据的表示时才会看到应用的科学记数法,最有可能是字符表示。

Hibernate将存储在数据库中的数据映射到java数据类型 - 它不会进行任何转换,这会导致数字的表示变为科学记数法。

Java.text.DecimalFormat是一种将数字转换为字符串的工具。如果要更改其生成的字符串的格式,请告诉它要使用的格式。例如

DecimalFormat decimalFormat = new DecimalFormat('###,###,###,###,###.0#');

顺便说一句,你不应该使用浮点数作为货币值。