c# - 将 int 隐式转换为 double

标签 c# implicit-conversion

所以,我有点困惑。我的印象是这应该有效: 在这种情况下,ab 都是整数(确切地说是计数器)。

由于 a/b 的结果可能包含小数位,因此整数显然不起作用。 因此,我声明了一个新的 double 并在其中执行计算,如下所示:

double texturefactor = ((a / b) * 10);

这并不像我预期的那样工作,a/b 的结果始终是如果我使用 int 进行计算会得到的结果结果。 另一方面,这有效:

double calculate1 = a;
double calculate2 = b;
double texturefactor = ((calculate1 / calculate2) * 10);

几个可能很愚蠢的问题- 1.我确信这应该有效——我知道在某些情况下 VS 会提示我试图隐式地从一种类型转换为另一种类型——这就是我想要做的!为什么没有,我错过了什么吗? :) 2. 我应该只将计数器 a 和 b 转换为 double 并省去转换的麻烦,还是那样麻烦?

最佳答案

a/b的结果是另一个整数,所以即使你这样做,伤害也已经造成了:

double texturefactor = ((a / b) * 10);

尝试将一个内部变量转换为 double:

var texturefactor = (( (double)a / b) * 10);

(double)a/b 的结果将是一个 double ,并且您不会丢失分数。

回答你的第二个问题:

Should I just convert the counters a and b to doubles

那也行。如果将它们更改为 double,则不必执行上述转换。

关于c# - 将 int 隐式转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293879/

相关文章:

c# - 禁用 "Name can be simplified"IDE0003 修复提示

c# - 为什么 DateTime.Now 和 StopWatch 会漂移?

c++ - 在初始化类类型时,C++ 可以进行多少次隐式转换来将一种用户定义类型转换为另一种类型?

c - 当 -1L、1U 和 -1UL 是符号常量时,-1L < 1U 和 -1L > UL 的输出与声明为枚举常量时不同

c# - 嵌套隐式运算符

c# - 干净的领域驱动设计(DDD)是乌托邦吗?

c# - 位域加值扩展方法(flags枚举)

c# - 使用 LINQ IEnumerable.ToDictionary() 时无法将类隐式转换为基类

c++ - 解析有符号和无符号 int 之间的 char 是否未指定?

c# - System.Windows.Media.RenderCapability.Tier 返回的不是渲染模式