gpt4 book ai didi

c# - 为什么这些除法方程的结果为零?

转载 作者:可可西里 更新时间:2023-11-01 09:16:51 25 4
gpt4 key购买 nike

下面for循环中所有除法方程的结果都是0。我怎样才能得到它给我一个小数例如:

297 / 315 = 0.30793650793650793650793650793651

代码:

using System;

namespace TestDivide
{
class Program
{
static void Main(string[] args)
{

for (int i = 0; i <= 100; i++)
{
decimal result = i / 100;
long result2 = i / 100;
double result3 = i / 100;
float result4 = i / 100;
Console.WriteLine("{0}/{1}={2} ({3},{4},{5}, {6})", i, 100, i / 100, result, result2, result3, result4);
}
Console.ReadLine();
}
}
}

回答:

谢谢 Jon 和大家,这就是我想做的:

using System;

namespace TestDivide
{
class Program
{
static void Main(string[] args)
{
int maximum = 300;

for (int i = 0; i <= maximum; i++)
{
float percentage = (i / (float)maximum) * 100f;
Console.WriteLine("on #{0}, {1:#}% finished.", i, percentage);
}
Console.ReadLine();
}
}
}

最佳答案

您使用的是 int/int,即使您要分配给小数/ double /浮点变量,它也会执行整数运算中的所有操作。

强制其中一个操作数是您要用于算术的类型。

for (int i = 0; i <= 100; i++)
{
decimal result = i / 100m;
long result2 = i / 100;
double result3 = i / 100d;
float result4 = i / 100f;
Console.WriteLine("{0}/{1}={2} ({3},{4},{5}, {6})",
i, 100, i / 100d, result, result2, result3, result4);
}

结果:

0/100=0 (0,0,0, 0)
1/100=0.01 (0.01,0,0.01, 0.01)
2/100=0.02 (0.02,0,0.02, 0.02)
3/100=0.03 (0.03,0,0.03, 0.03)
4/100=0.04 (0.04,0,0.04, 0.04)
5/100=0.05 (0.05,0,0.05, 0.05)

(等)

请注意,不是显示由 float 或 double 表示的确切值 - 例如,您不能将 0.01 精确地表示为 float 或 double .字符串格式有效地舍入了结果。看我的article on .NET floating binary point了解更多信息以及可让您查看 double 值的精确值的类。

我没有为 result2 使用 100L,因为结果总是一样的。

关于c# - 为什么这些除法方程的结果为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com