2013-09-14 3 views
1

Я пытаюсь округлить десятичное число с точностью 2, но он не работает. Дайте мне знать, проблема в моем коде ниже:округлые цифры в apache poi ss workbook

CellStyle cs = wb.createCellStyle(); 
DataFormat df = wb.createDataFormat(); 
cs.setDataFormat(df.getFormat("0.0")); 


for (int i=14;i<rows;i++) 
{ 
    Cell y= wb.getSheetAt(0).getRow(i).getCell((short) colValue); 

    if (y.getCellType() == Cell.CELL_TYPE_STRING) { 

    } else if (y.getCellType() == Cell.CELL_TYPE_NUMERIC) { 

     float d=(float) y.getNumericCellValue(); 
     y.setCellStyle(cs); 
    } 
} 
+1

Вы явно не понимаете, с плавающей точкой. Вы не можете округлить числа с плавающей запятой. Единственный способ округления - преобразовать в строку. Однако, если вы преобразуете эту строку обратно в float, это будет неточно снова. –

+0

style.setDataFormat (HSSFDataFormat.getBuiltinFormat ("@")); // значение возвращается как значение String. – swamy

ответ

1

Использование так:

CellStyle cs = wb.createCellStyle(); 
cs.setDataFormat(wb 
    .getCreationHelper() 
    .createDataFormat() 
    .getFormat("##.##")); 
y.setCellStyle(cs); 
Смежные вопросы