c# - 为什么 5/10 = 0.0?

标签 c# double

<分区>

想知道为什么

double progress = 5/10;

表明我的变量 progress = 0.0 而它应该等于 0.5,对吗?

明确定义 progress

double progress = 0.5;

工作正常,但我需要在数学上不明确地定义它。也许我缺少一个库或其他东西,或者我的大脑。 Vis Studio 2012 Win 7 x64。

最佳答案

因为你在做整数除法。请尝试使用 5.0/10.0。 (或 5.0/105/10.0 - 至少有一个操作数是 double。)

编译器不会使用 = 符号左侧的内容来确定右侧常量表达式的值。它将 5 插入为 integer 并将 10 作为 integer 插入,因此 /作为整数除法

当您将小数点添加到文字数字时,它被解释为 double。当在 doubleint 之间完成除法时,int 将转换为 double 和“常规"将使用除法。

注意 (double)(5/10) 会给你 double 0 - 不是 double 0.5。这是出于与上述相同的原因:常量表达式整数除法 5/10 的解释不受该表达式外部的任何上下文的影响。

关于c# - 为什么 5/10 = 0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153421/

相关文章:

c# - 序列化包含数组的对象

java - 双重运算的错误输出

c# - Azure Blob 容器,无法生成 token

c# - ML 总是返回 0

c++ - double 类型的参数与参数类型双指针不兼容

java - 为什么我无法计算 double 值?

javascript - ~~ 如何作为 math.floor 工作?

java - 如何防止小数除法时精度损失?

c# - 命名空间 'Microsoft.EntityFrameworkCore' 中不存在“迁移”

C# WebAPI 2反序列化产生空值但没有异常