2017-10-05 129 views
-1

我有一个关于groovy中的大数字的问题,我在调用DB的脚本中编写并将预算值放入名为toub_start_budget的变量中,存储的值为2570000000. 因为我想做算术运算我创建了另一个名为toub_budget的变量,并将第一个变量的值作为float放入它中。 问题是新变量没有将数据保存为float,而是以2.56999987E9的数字形式保存。 和我做的算术错了,比如除以1000000,会带来2569.9而不是精确的结果2570(精度很重要)。 有人可以请建议如何处理大数字,算术? 问候在groovy + Jmeter + java中处理大数字

enter image description here

enter image description here

+0

使用'BigDecimal',而不是'float' –

+1

的代码和输出请不要发表图片看,但发布文本本身缩进四个空格。 – Vampire

+0

你想花一些认真的时间学习浮点数的基础知识......例如https://stackoverflow.com/questions/588004/is-floating-point-math-broken ...然后你读到关于浮点JVM上的点号... – GhostCat

回答

2

不要使用float,它是由定义不准确的。如果您需要进行精确计算和任意大数字,请使用BigDecimal。如果使用Groovy,然后只是计算的,Groovy将自动使用BigDecimal在适当的时候,你可以通过执行(2570000000/1000).getClass()(2570000000/1001).getClass()