c# - 百分比计算总是返回 0

标签 c#

<分区>

我正在计算要添加到数据网格中的百分比,但是当我报告数据时它总是返回 0,我做错了什么?

如果我遇到以下情况:变量 quantidadeInstalada 的值为 10,目标值为 20,concluido 必须返回 50,但它返回 0

 private void AdicionarPessoa()
 {
     string Valida = ValidaPessoa();
     if (Valida.Equals(""))
     {
         double concluido=0, falta=0;
         int quantidadeInstalada = Convert.ToInt32(ttbQuantidade.Text);
         int meta = Convert.ToInt32(ttbMetaPessoa.Text);

         concluido = (quantidadeInstalada/meta)*100;
         falta = 100-concluido;

         MessageBox.Show(concluido.Text);
     }
     else
         MessageBox.Show(Valida);
 }

最佳答案

这可能是由于 int 的精度。请改用 decimaldouble

当我们使用整数时,我们会失去精度。

Console.WriteLine(100 / 17); // 5
Console.WriteLine(100 / 17m); // 5.8823529411764705882352941176     
Console.WriteLine(100 / 17d); // 5.88235294117647
Console.WriteLine(100 / 17f); // 5.882353

由于整数总是向下舍入,0.99 作为整数是 0


请注意,对于精度,输入的类型很重要。

double output = input1 * input2;

例如:

double outputA = 9 / 10;
Console.WriteLine(outputA); // 0

double outputB = 9 / 10d;
Console.WriteLine(outputB); // 0.9

double outputC = 9d / 10;
Console.WriteLine(outputC); // 0.9

Here is a Fiddle.

关于c# - 百分比计算总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48957699/

相关文章:

c# - 属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

c# - 如何从内存流中打开Word文档

c# - 没有 SQL Server 的 Visual Studio 2012 安装

C# 关闭按钮上的窗体单击

c# - 图像不保留缩放比例和偏移

c# - 正则表达式行尾和字符串终止符!

c# - 模拟命令行的控制台应用程序

c# - 如何优化正则表达式性能?

c# - asp.net 中多个浏览器中的服务器 session 句柄?

c# - 添加到字典中的值