c# - double 或 float 的赋值和使用在 C# 中不起作用
问题描述
在 C# 中,为什么它可以正常工作:
double dr = 1.5;
但这不会:
double dr = (double)(3/2);
后者等于 1
解决方案
发生这种情况是因为在您进行强制转换之前(3/2)
对代码位进行了评估。因此,当执行该代码时,这些值是整数,因此计算结果也是整数。这意味着结果的小数部分被丢弃,结果是一个整数值:.double
1
当您将其转换为 double 时,该值中已经没有记录任何分数。将其转换为双精度不能放回已删除的信息。
如果您先将单个值转换为双精度值,或者用小数点表示它们,它将起作用:
Console.WriteLine((double)(3/2));
Console.WriteLine(((double)3/(double)2));
Console.WriteLine(3.0/2.0);
输出
1
1.5
1.5
推荐阅读
- python - 如何找出字符串是否在字典中
- asp.net-core-webapi - 带有 OData 控制器的 ASP.NET Core Web API 需要使用 fluent API 来实现复合键
- javascript - js将html附加到表格单元格
- bash - 在 csv 文件中查找列的索引号,但命令不显示结果?
- angular - 打开 mat-sidenav 时如何停止在 mat-drawer-content 中滚动
- selenium-webdriver - 如何确保机器人不会点击它已经订阅的那些人
- javascript - 当我从最近的选项卡中删除浏览器时,我的表单丢弃了用户输入 如何修复
- bash - 在 Eclipse 中附加 Git Bash
- reactjs - 传递对象数组时,如何从 typeahead 中获取 id 而不是 labelKey?
- python - Python 中的多次导入会影响内存吗?