Java 转换字符串时出现问题->;浮动->;一串
我有一个JTable,在其中输入一些值。这是一个侦听器函数,用于了解是否对值进行了任何更改,以便我可以更新它们。值必须具有指定的格式(#.#####),因此,如果客户端输入的值超过3,我将对浮点值进行四舍五入,将其四舍五入到小数点后3位Java 转换字符串时出现问题->;浮动->;一串,java,swing,Java,Swing,我有一个JTable,在其中输入一些值。这是一个侦听器函数,用于了解是否对值进行了任何更改,以便我可以更新它们。值必须具有指定的格式(#.#####),因此,如果客户端输入的值超过3,我将对浮点值进行四舍五入,将其四舍五入到小数点后3位 private class CambioTablaPretratamientoListener implements TableModelListener{ public void tableChanged(TableModelEvent e){
private class CambioTablaPretratamientoListener implements TableModelListener{
public void tableChanged(TableModelEvent e){
try{
if(enviarDatosADispositivo){
TableModel model = (TableModel)e.getSource();
float value = Float.parseFloat((String)model.getValueAt(e.getLastRow(), 1));
DecimalFormat dec = new DecimalFormat("#.###");
String aux = dec.format(value);
if(model.getValueAt(e.getLastRow(), 1).equals(aux))
return;
else
model.setValueAt(aux, e.getLastRow(), 1);
value = Float.parseFloat(aux);
String nombreAtributo = (String)model.getValueAt(e.getLastRow(), 0);
nodoAModificar.setPretratamientUserParameter(nombreAtributo, value);
}
}catch(BusinessException ex){
ex.printStackTrace();
}
}
}
代码一开始似乎是有效的,因为它是四舍五入的,数字出现在表中,但值没有得到更新。我猜我的DecimalFormat有问题,因为如果我像这样离开函数,它会工作:
private class CambioTablaPretratamientoListener implements TableModelListener{
public void tableChanged(TableModelEvent e){
try{
if(enviarDatosADispositivo){
TableModel model = (TableModel)e.getSource();
float value = Float.parseFloat((String)model.getValueAt(e.getLastRow(), 1));
String nombreAtributo = (String)model.getValueAt(e.getLastRow(), 0);
nodoAModificar.setPretratamientUserParameter(nombreAtributo, value);
}
}catch(BusinessException ex){
ex.printStackTrace();
}
}
}
最后您似乎认为,将浮点数转换为字符串,然后再转换回来,可以使其具有一定数量的小数位数。这是错误的。FP值没有任何小数位。它们有两个位置。如果小数部分是2的负幂,则这些数字只对应于固定的小数位数,例如0.5、0.125、0.0625等。如果使用BigDecimal,您实际上可以截断数字,而不是尝试使用Float(缺乏)精度。相反,将您的应用为a。我知道如何从二进制位生成FP,但如果我通过字符串转换将其舍入,我不明白为什么它不应该工作。不管怎样,我怎么能用不同的方式来做呢?@Roman Rdgz这很奇怪,因为我刚刚告诉过你为什么它不起作用。@Roman Rdgz只适用于某些值。由于给出的原因,它不可能对所有的值都有效。这意味着代码会有很大的变化,因为这是我从以前的程序员那里继承下来的一个老项目。我不能把它修好,让它和浮子一起运行吗?