找回密码
 立即注册

QQ登录

只需一步,快速开始

jiqimao 讲师达人认证
金牌服务用户   /  发表于:2022-7-1 13:27  /   查看:2032  /  回复:9
1金币
本帖最后由 Clark.Pan 于 2022-7-1 18:03 编辑

你好

我用gcexcel计算=IMPOWER("1+i",3)这个公式,会出现包含无用位数长度的问题,结果是
-2.0000000000000004+2.0000000000000004i
但是用excel计算同一个公式,结果是
-2+2i

gcexcel计算的结果中包含了超长的无用位数。

请问如何解决?
image.png217166442.png

最佳答案

查看完整内容

你好,该问题已在5.1.5中修复,该版本已发布,请升级后尝试。

评分

参与人数 1金币 +666 收起 理由
Derrick.Jiao + 666 赞一个!

查看全部评分

9 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-7-1 13:27:31
来自 10#
你好,该问题已在5.1.5中修复,该版本已发布,请升级后尝试。
回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-7-1 13:53:51
2#
您好,我这边使用GcExcel显示结果正常的
worksheet.getRange("B6").setFormula("=IMPOWER(\"1+i\",3)");

image.png885192870.png
image.png361098326.png
回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-7-1 14:09:18
3#
在SpreadsJs中复现了您的问题,有函数可以取出对应的虚部和实部
IMREAL:返回复数的实部
IMAGINARY:返回复述的虚部
image.png133689574.png
回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-7-1 14:27:42
4#
GC.Spread.CalcEngine.Functions.CALC_PRECISION = 14
您可以设置精度参数,彻底解决,有空可以试试哈
回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2022-7-1 15:20:56
5#
我想要在gcexcel中获得正常长度的结果,不用spreadjs参与,可以吗?
回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-7-1 15:36:04
6#
可以的 不过我这边在使用GcExcel中操作如第一条回复是正常的显示,用WPS和excel打开都正常。您方便提供下demo吗

回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-7-1 15:36:36
7#
        //创建工作薄
        Workbook workbook = new Workbook();
        //获取一个sheet
        IWorksheet worksheet = workbook.getWorksheets().get(0);
        worksheet.getRange("B6").setFormula("=IMPOWER(\"1+i\",3)");
        workbook.save("test4.xlsx");
回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2022-7-1 15:53:46
8#
我不要生成xlsx,我要在内存中拿到结果的。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-1 18:03:31
9#
收到,已经重现问题并提交BUG,目前推测应该是Java计算精度问题,Bug编号(DOCXLS-6173)。有进一步的反馈,我会在这里回复您。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部