如何避免存储来自Database的double值的字符串的指数格式

时间:2015-11-16 03:19:17

标签: string forms for-loop exponential

我有一个类如下,用于使用marshaller生成XML

我有一个带有126个字节的Database float列,用于存储大数值

例如:薪水FLOAT(126)

在课堂上我有如下的映射

@NamedQuery(name = "example", query = "SELECT test FROM example test WHERE (test.xmlGenerate IS NULL OR NOT test.xmlGenerate = 'Y')")

public class Example {

@Column(name = "SALARY")    
private String monthlySalary;

}

为类中的薪水生成getter和setter

然后我将使用JAXB marshaller使用下面的代码生成xml

JAXBContext context = JAXBContext.newInstance(Example.getClass());
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(object, writer);

现在我的问题是,如果工资超过8位数,它将以指数形式生成 示例:110016400至1.100164E8 请建议我如何避免指数形式,因为我已经使用字符串代替双列或长列,以便它不会转换为指数形式,即使它已转换为指数形式。请在此建议避免指数形式。

1 个答案:

答案 0 :(得分:0)

使用它 从DB中检索值为double,比如说

 public double getSalary() {
    return salary;
 }

 Convert it to String

 BigDecimal.valueOf(getSalary()).toPlainString();