java如何获取excel公式计算结果,不用XSSFFormulaEvaluator,POI的公式取值GC频率过高

java如何获取excel公式计算结果,不用XSSFFormulaEvaluator,POI的公式取值GC频率过高,第1张

if(cellgetCachedFormulaResultType() == 0){res = StringvalueOf(cellgetNumericCellValue());};
if(cellgetCachedFormulaResultType() == 1){res = cellgetStringCellValue();}
不用evaluator

经过测试,结果不是如你所说。两次都取到了。
public class T{
public static void main(String argv[]){
T t = new T();
tsetHobbys(new String[]{"1", "2", "3"});
tgetHobbys();
}
private String[] hobbys;
public String[] getHobbys() {
Systemoutprintln(thishobbys[0]);//也可以取到
return hobbys;
}
public void setHobbys(String[] hobbys) {
thishobbys = hobbys;
Systemoutprintln(thishobbys[0]);//可以取到
}
}
javac -encoding UTF-8 Tjava
Process started >>>
<<< Process finished
java T
Process started >>>
1
1
<<< Process finished

float和double都是遵循IEEE754标准的,内存单元里都是划分为三部分的:符号位 阶码 尾数
其中
float的符号位占一位,阶码为8位,尾数为23位,所以一共四个字节;double的符号位占一位,阶码为11位,尾数52位。符号位为0的话说明是
正的,为1的话说明是负的;阶码就是尾数所要乘以的2的次方数;尾数默认是去掉整数位的1的,也就是说加入尾数序列为01010101(后面还有很多),
那么其实它是101010101(后面还有很多)。比如一个float类型的变量,其符号位为0,阶码化成十进制为3,尾数为01000000(后面都是0),那
么这个变量化为十进制的话就是125(2^3)=10。
int类型占四个字节,但是它不是像float那样表示的,int除了符号位之外其他位都是表示数值的,没有表示阶码的,所以它的范围比float小很多。
下面是维基百科上的一点解释,可以参考一下。
>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13408706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存