【问题标题】:How to cast int to float in C#? [duplicate]如何在 C# 中将 int 转换为浮点数? [复制]
【发布时间】:2017-10-25 17:28:53
【问题描述】:

我想写下这个等式:

1+(2/n!)+(3/n!)+...+(n/n!),

但结果总是等于 1。 错误代码在哪里? 我的代码:

Console.Write("Please Enter Your Number: ");

int num = int.Parse(Console.ReadLine());

int fact = 1;

for (int i = num; i > 1; i--)
{
    fact *= i;
}

Console.WriteLine("Fact= " + fact);

float result = 1;

for (int i = 2; i >= num; i++)
{
    result += (i / fact);

}
Console.WriteLine("Result= " + result);

Console.WriteLine("Press any key to exit...");

Console.ReadKey();

【问题讨论】:

  • 您使用(float) xx 转换为float
  • 请记住,在 C#(以及 C 和 Java 以及其他几种语言)中:int / int -> int。即操作数决定了除法运算方式。
  • 问题不是“如何”,而是在哪里。 “在哪里”是“在你用它做任何应该是浮点数学的数学之前”。
  • 我测试过但不正确!
  • 是的,我犯了一个错误。

标签: c# casting


【解决方案1】:

因为这不会循环

for (int i = 2; i >= num; i++)

如果你在调试中追踪它,那将是显而易见的

<=

在隐含演员表中,(i / fact) 可能在演员表之前执行,因此将事实转换为浮动。 (浮动)事实。

你没有 int / decimal

你可以使用小数而不是浮点数

【讨论】:

  • 'for (int i = num; i >1; i--)'
  • 循环正确。
  • Q LOKO睁开眼睛
  • 投反对票有什么问题?
猜你喜欢
  • 2010-11-05
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多