递归火山软件开发平台

标题: 这是火山的问题还是代码的问题 C++易语言都正常 就火山不... [打印本页]

作者: 小凡工具箱    时间: 2023-12-12 20:32
标题: 这是火山的问题还是代码的问题 C++易语言都正常 就火山不...

C++和易语言都正常。唯独火山输出了0

作者: 折戟沉沙    时间: 2023-12-12 20:55
首先你数据类型就用错了,其次数值后面加上.0
作者: urenai    时间: 2023-12-12 20:56
发现2个问题
作者: hcwanz    时间: 2023-12-12 21:05
你要不再看一眼c的代码?
(, 下载次数: 51)

作者: 小凡工具箱    时间: 2023-12-12 21:08
hcwanz 发表于 2023-12-12 21:05
你要不再看一眼c的代码?

你把这两个值放长整数变量里面试试
作者: hcwanz    时间: 2023-12-12 21:11
小凡工具箱 发表于 2023-12-12 21:08
你把这两个值放长整数变量里面试试

你怎么c++不用长整数
作者: urenai    时间: 2023-12-12 21:36
哎,你们都是坏人,逗弄新人干啥?

楼主你真大眼仔细瞅瞅,你C代码使用的是double,
知道这是啥子类型吗?
火山这边叫小数,他还有个确切的中文名:《双精度浮点数》也叫《双精度小数》
虽然你易语言和火山都使用了长整数,
但是,易语言所有的四则运算似乎都是已双精度小数下计算的。

但是,火山不是,你整数x整数,结果也是整数

言尽于此,珍重!

作者: hcwanz    时间: 2023-12-12 21:53
这两个数相除小于1,用整数类型是必然等于零的。
作者: sfmf520    时间: 2023-12-12 23:39
<火山程序 类型 = "通常" 版本 = 1 />

变量 completedLength <类型 = 长整数>
变量 totalLength <类型 = 长整数>
completedLength = 215252992
totalLength = 219127816
调试输出 ((小数)completedLength / totalLength * 100)



作者: 创世魂    时间: 2023-12-13 08:04
100  改成 100.0 就行了。
作者: shuimiao    时间: 2023-12-13 13:27
火山类型要与c++对齐,不能与易语言对齐。你的c++用的double类型,对应火山是小数型。另外,数值运算表达式中只要包含小数点就会按double类型来计算,否则按设定的类型(如你设定的长整数)计算结果就是0。而易语言默认都是double计算,这是易语言破坏了计算规则,是为了方便使用,从而丢失精确定义数据类型的特性
作者: dingpengdhr    时间: 2023-12-13 17:23
这说明当初吴总设计易语言的时候  把数值类型全部强转双精度是有很大意义的   确实弥补了新手小白在数据类型上的很多错误
作者: hcwanz    时间: 2023-12-13 17:57
dingpengdhr 发表于 2023-12-13 17:23
这说明当初吴总设计易语言的时候  把数值类型全部强转双精度是有很大意义的   确实弥补了新手小白在数据类 ...

但效率瞬间就下去了,双精度单是内存长度就和长整数一样
作者: 落雪有声    时间: 2023-12-14 00:59
本帖最后由 落雪有声 于 2023-12-14 01:02 编辑

215252992*100/219127816

说白了,你要转变一下思路,你先乘100 再除就行了. 我踩过这个坑
作者: 正版商业用户    时间: 2023-12-14 08:04
落雪有声 发表于 2023-12-14 00:59
215252992*100/219127816

说白了,你要转变一下思路,你先乘100 再除就行了. 我踩过这个坑 ...

偶记得应该是先乘以1.0,就是数值后面要加个小数点,SQL Server踩过这个坑,当时折腾很久才知道这个问题
作者: 明靓    时间: 2023-12-14 21:18
dingpengdhr 发表于 2023-12-13 17:23
这说明当初吴总设计易语言的时候  把数值类型全部强转双精度是有很大意义的   确实弥补了新手小白在数据类 ...

但同样造成了丢失精度的严重缺陷,便易语言不能做到严格的计算操作.
作者: li327065266kun    时间: 2023-12-17 12:20
类型用小数就行了..........




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4