这是《Java 哲学》一书中的示例(请记住 FancyToy 扩展了 Toy):
Class<FancyToy> ftClass = FancyToy.class;
Class<? super FancyToy> up = ftClass.getSuperclass(); //compiles
Class<Toy> up = ftClass.getSuperclass(); //doesn't compile
在IDEA中尝试了很多次,只是出现“不兼容类型”的消息。请给我一个提示,为什么我们不能仅使用泛型类型玩具?我正在使用 Java POI 库读取 Excel 文件,然后将其显示在 HTML 表格中。Excel 文件非常简单,只有 1 行 3 列:
A1 单元格= 21.7 B1 单元格= 20.0 C1 单元格是一个公式单元格,其公式为 =(A1-B1)/B1,它具有自定义格式“百分比”,小数点后 0 位。Excel 将其值显示为 9%。这是因为 1.7/20 在计算器上给出的结果是 0.085;当它转换为“百分比”格式时,它会变成 8.5%,并且因为格式显示包含 0 位小数,所以它会四舍五入到 9%,这就是 Excel 显示的内容。都好。
然而,POI 将该值显示为 8%。我观察到 1.7/20 的计算结果是 0.084999999。由于上面应用的百分比格式,它会转换为 8.4999999%,并且由于小数点后 0 位,它会向下舍入为 8%。
如何让 POI 返还 9% 而不是 8%?这是代码片段:
String myFormat="0%";
CreationHelper helper = wbWrapper.getWb().getCreationHelper();
CellUtil.setCellStyleProperty(cell, CellUtil.DATA_FORMAT,helper.createDataFormat().getFormat(myFormat));
String val = dataFormatter.formatCellValue(cell, evaluator);
这里 evaluator 是 org.apache.poi.ss.usermodel.FormulaEvaluator 的实例,dataFormatter 是 org.apache.poi.ss.usermodel.DataFormatter 的实例
当我打印变量“val”时,它返回 8%,而不是 Excel 中显示的值 (9%)。
茅侃侃
相关分类