目前我有一个对我来说似乎很特别的问题,事实证明,当我在 Visual Studio 中编写声明“double”或“int”类型变量的代码时,并对其执行简单的除法,例如:
int nEntero = 5;
Double decimal = nEntero /100;
Console.WriteLine(decimal);
// La idea es que imprima 0.05 como resultado
// Pero en cambio me muestra solo el numero entero, osea 0.
事实证明,例如,当使用它来获取百分比时,一切都给出 0,因为每个数字乘以 0 都等于 0。
我向您展示了一些有关 Visual Studio 的输出的测试。
如果您能帮我解决这个问题,我将不胜感激。敬请关注。
问题
碰巧的是,当由 C# 编译器(以及许多其他语言)解析时,文字值 100 被假定为整数类型。因此划分为:
也将是 integer 类型,因此将丢弃小数并返回与 integer 部分对应的值。
然后,您应用到变量的类型被有效地执行,但是除法结果的值不再有小数,产生简单的输出 a
0.0
(当nEntero
它小于时100
)另一方面,
decimal
不允许对变量使用保留字,我不明白你的程序是如何编译的。解决方案
解决它的一种方法是在进行拆分之前对变量类型进行转换,正如另一个答案所建议的那样,例如:
甚至:
但是,我们可以通过将值 100 写入使其被识别为浮点类型的方式来避免显式转换。为此,我们必须在它后面加上一个小数点,后跟一个零或两个零(或任何所需的小数部分值)。例如:
或者可能:
通过这种方式,C#会将由 表示的整数类型(隐式)转换
nEntero
为浮点数,然后继续执行浮点除法。根据应用程序的需要,您可以使用
float
、decimal
或设置预期的精度级别double
。例如:最后,一个注释:
对于您的问题,不需要这种显式转换,因为
integer
可以将类型隐式转换为decimal
.我希望这可以帮助您解决问题。
尝试解析 nInteger 以浮动...
我希望我对您有所帮助