新手请教大家一个关于数据类型的问题

[复制链接]
查看11 | 回复8 | 2021-1-27 05:48:43 | 显示全部楼层 |阅读模式

这段代码没有报错,程序也能正常运行,但是就是不太明白
1、右边的double怎么能赋值给左边的int(r1、r2定义为int)?
2、Publicruns()AsByte,run(i)为byte怎么转成的5?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
basic语言,其实可以“顾名思义”,它在运行时做了许多模糊化的动态转换,它的编译器对于类型的要求也就不那么要求严谨。这样做,basic开发者就感觉方便。
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
至于第二个问题,你应该把runs()和重载的runs(i)的源代码找出来。不贴源代码,谁知道它呢?
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
引用2楼sp1234的回复:至于第二个问题,你应该把runs()和重载的runs(i)的源代码找出来。不贴源代码,谁知道它呢?

感谢您的回复,上图是run()的源代码,对于第一个问题,这种写法就意味着会丢失精度吗?
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
你这里的runs是个byte数组。
数组!
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
基本上两个问题都是同一个问题,是double、byte、int混合起来,然后basic它自动转换了。
至于是否“丢失精度”的问题,这其实要问你自己。也许丢失精度,也许有意丢失误差。要看算法是不是就是这样设计的。
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
比如说,如果你的r1、r2是屏幕坐标中的值,而它除了给屏幕定点以外并不进行更复杂的业务计算(业务计算使用aRadial而不使用屏幕坐标),进行旋转的操作中必不可少地要涉及double精度的数值,而结果只要int类型,那么这就不算是丢失精度,而必定要将double转换为int的。
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
引用5楼sp1234的回复:基本上两个问题都是同一个问题,是double、byte、int混合起来,然后basic它自动转换了。
至于是否“丢失精度”的问题,这其实要问你自己。也许丢失精度,也许有意丢失误差。要看算法是不是就是这样设计的。

我主要是想把这段代码改成C#语言的,那就只能做强转了吗?
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
引用6楼sp1234的回复:比如说,如果你的r1、r2是屏幕坐标中的值,而它除了给屏幕定点以外并不进行更复杂的业务计算(业务计算使用aRadial而不使用屏幕坐标),进行旋转的操作中必不可少地要涉及double精度的数值,而结果只要int类型,那么这就不算是丢失精度,而必定要将double转换为int的。
对,就是您说的这个意思,谢谢咯!

回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行