递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 小数计算精度的重大bug | 附:15位高精度的小数到文本()

[复制链接]

482

主题

2945

帖子

1万

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
10384
跳转到指定楼层
楼主
发表于 2024-9-29 22:16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shuimiao 于 2024-9-30 17:32 编辑



一、0.01 / 10000.0 * 200.0 == 0


X大说这是吴总自己对表达式做了改变,导致丢失精度,只要把计算数都改成变量就没事,但是这说不过去了吧,老老实实翻译人家的表达式不好吗,徒增麻烦


二、变量a(值是0.01) / 变量b(值是10000.0) ==  变量c(值是0.000001)

这时如果你将变量c到文本,竟然转换为"0"。当你想计算用户给出文本中出现的多联计算表达式时,比如"0.01 / 10000.0 * 200.0",那必然就会分成两个步骤,第一步"0.01 / 10000.0"计算出结果转换到文本就是"0",然后第二步 "0 * 200.0"还是0。


请求吴总修复bug


第二点问题,取格式文本()方法会出现固定小数位6精度,不足位自动补0的问题,不行。所以我问ai写了个小数到文本的方法,好用,特来贡献。
游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

84

主题

348

帖子

1593

积分

银牌会员

Rank: 6Rank: 6

积分
1593
沙发
发表于 2024-9-30 00:30:20 | 只看该作者
好像大数的四舍五入还有个会去掉负数符号的BUG,当时没细究,只加了个-号了事
回复

使用道具 举报

14

主题

89

帖子

1349

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
1349
板凳
发表于 2024-9-30 08:24:30 | 只看该作者
支持!
回复

使用道具 举报

39

主题

112

帖子

713

积分

高级会员

Rank: 4

积分
713
地板
发表于 2024-9-30 16:04:09 | 只看该作者
当时没细究
敲代码只是兴趣爱好并非程序员
回复

使用道具 举报

17

主题

450

帖子

2663

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
2663
5#
发表于 2024-9-30 17:25:53 来自手机 | 只看该作者
回复

使用道具 举报

26

主题

523

帖子

5063

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
5063
QQ
6#
发表于 2024-9-30 18:27:19 来自手机 | 只看该作者
看看
回复

使用道具 举报

31

主题

2846

帖子

1万

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
10173
7#
发表于 2024-9-30 20:52:02 | 只看该作者
用自带的「数值到格式文本]也行
回复

使用道具 举报

482

主题

2945

帖子

1万

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
10384
8#
 楼主| 发表于 2024-9-30 21:33:12 | 只看该作者
Xelloss0618 发表于 2024-9-30 20:52
用自带的「数值到格式文本]也行

没用的,数值到格式文本 (0.00000001)的结果是1E-08,而不是"0.00000001",还是我用ai写的方法好使
回复

使用道具 举报

31

主题

2846

帖子

1万

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
10173
9#
发表于 2024-9-30 22:05:45 | 只看该作者
shuimiao 发表于 2024-9-30 21:33
没用的,数值到格式文本 (0.00000001)的结果是1E-08,而不是"0.00000001",还是我用ai写的方法好使 ...

嗯,你顶楼的代码跟 取格式文本 ("%.15f", 0.00000001) 也差别不大,就是后面多写一个删除尾部多余的0
回复

使用道具 举报

482

主题

2945

帖子

1万

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
10384
10#
 楼主| 发表于 2024-10-1 14:01:37 来自手机 | 只看该作者
Xelloss0618 发表于 2024-9-30 22:05
嗯,你顶楼的代码跟 取格式文本 ("%.15f", 0.00000001) 也差别不大,就是后面多写一个删除尾部多余的0 ...

如果取格式文本()这个,然后再火山代码去零,跟我给的代码,不知道哪个效率更高
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-14 03:21 , Processed in 0.096427 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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