递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 4491|回复: 18
打印 上一主题 下一主题

[视窗] 乘法运算,小数点位数多了结果等于0

[复制链接]

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
跳转到指定楼层
楼主
发表于 2023-11-10 21:46:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 1980882096 于 2023-11-10 21:48 编辑

比如  0.2*0.000001  结果是0           2*0.000001 结果也是0           
这是为什么



回复

使用道具 举报

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
来自 16#
 楼主| 发表于 2023-11-11 20:33:22 | 只看该作者
解决了,是 到文本这个命令丢失精度,用数值到格式文本就解决了,顺便 @shuimiao  的json写小数值用的到文本,高精度写不进去
回复

使用道具 举报

18

主题

337

帖子

2921

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2921
19#
发表于 2023-11-11 21:36:27 来自手机 | 只看该作者
你试了?能正确运行就算不错了,还没有对速度优化过
回复

使用道具 举报

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
18#
 楼主| 发表于 2023-11-11 21:27:40 | 只看该作者
weilai 发表于 2023-11-11 21:07
刚写了个小数文本互转的,支持高精度,可以试试

还是数值到格式文本这个命令好一点,全精度的,你这个效率不高
回复

使用道具 举报

18

主题

337

帖子

2921

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2921
17#
发表于 2023-11-11 21:07:51 | 只看该作者
小数文本互转.v (43.6 KB, 下载次数: 4)
刚写了个小数文本互转的,支持高精度,可以试试
回复

使用道具 举报

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
15#
 楼主| 发表于 2023-11-11 16:06:08 | 只看该作者
Xelloss0618 发表于 2023-11-11 14:46
火山的小数就是双精度的,是“调试输出”这个命令的精度比较低,小于 1e-6 就输出 0 了,你可以用
调试输 ...







大佬,有办法解决高精度计算吗?

QQ截图20231111155441.png (58.68 KB, 下载次数: 53)

QQ截图20231111155441.png
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
14#
发表于 2023-11-11 14:46:38 | 只看该作者
1980882096 发表于 2023-11-11 12:54
就算用变量保存,超过6位的话还是返回0,请问大佬有办法解决吗,感觉火山这个小数并不是双精度的,文本到 ...

火山的小数就是双精度的,是“调试输出”这个命令的精度比较低,小于 1e-6 就输出 0 了,你可以用
调试输出 (取格式文本 ("%.8f", 0.0000001))
回复

使用道具 举报

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
13#
 楼主| 发表于 2023-11-11 12:54:54 | 只看该作者
本帖最后由 1980882096 于 2023-11-11 12:58 编辑
Xelloss0618 发表于 2023-11-11 11:00
火山已经是双精度了,不过这还是要让火山背锅。
因为 C/C++ 是能正确计算出 2 * 0.000001 = 0.000002 的 ...

就算用变量保存,超过6位的话还是返回0,请问大佬有办法解决吗,感觉火山这个小数并不是双精度的,文本到小数 ("0.0000001")这也是返回0
回复

使用道具 举报

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
12#
 楼主| 发表于 2023-11-11 12:29:12 | 只看该作者
Xelloss0618 发表于 2023-11-11 11:00
火山已经是双精度了,不过这还是要让火山背锅。
因为 C/C++ 是能正确计算出 2 * 0.000001 = 0.000002 的 ...

多谢大佬解惑
回复

使用道具 举报

4

主题

63

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
11#
 楼主| 发表于 2023-11-11 11:29:54 | 只看该作者
suyan 发表于 2023-11-10 22:16
前面加上(小数)

没用的,都试过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 06:26 , Processed in 0.100471 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表