【问题标题】:What values integer gets? [duplicate]整数得到什么值? [复制]
【发布时间】:2021-04-30 21:31:26
【问题描述】:

整数得到什么值?当我写这段代码时,输​​出是 0 而不是 0.333333

int a=18;
Int b=6;
int c=b/a; 
Console.WriteLine(c);

谢谢你(:

【问题讨论】:

  • 你必须使用 double 而不是 int
  • 在您的示例中,a、b 和 c 是整数。如果将两个整数相除,则得到一个整数,因此int c=b/a 有意义。但是,有除整数的规则——使结果成为整数所需的规则。如果您整数除以 6 除以 18,则结果必须是整数(而三分之一不是)。规则是(大致)进行除法,然后将结果截断为零。所以6/18 是零,24/18 是一。您可能想查找 modulus operator (%) 并查看它如何为您提供整数除法中的 Remainder

标签: c# integer


【解决方案1】:

int 不能显示十进制。你必须使用float 或double

【讨论】:

    【解决方案2】:

    答案就在您的问题中,integer 只能保存整数值 (...,-2,-1,0,1,2,...) 所以 6/18 将是0. 如果满足其中 2 个条件,则可能会出现其他情况:

    1.c(变量结果赋值)可以容纳浮点类型(float,double,decimal)

    1. 已完成隐式或显式强制转换。

    再描述一下(2):

    如果 a 或 b 中的任何一个为浮点类型,则将结果隐式转换为浮点值。

    double a = 6;
    int b = 18;
    double c =a / b;
    

    或者你明确地说 int 值(至少其中一个)应该被视为浮点数:

    int a = 6;
    int b= 18;
    double c = (double)a/(double)b; 
    

    【讨论】:

      【解决方案3】:
      double c = (double) a/b;
      

      关于类型你需要知道的一切

      https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/types

      【讨论】:

        猜你喜欢
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        • 2020-05-02
        • 2014-03-25
        • 1970-01-01
        • 2020-10-02
        • 2015-07-16
        相关资源
        最近更新 更多