【问题标题】:Unexpected double value in c# [duplicate]c#中意外的双值[重复]
【发布时间】:2013-11-05 12:53:38
【问题描述】:

今天我遇到了一个问题,无法弄清楚这个简单的陈述有什么问题

我试过了

double d =1/4;

我的预期答案是0.25,但实际上答案是0.0 为什么会这样??

如果语句是这样的整数变量,我们该怎么办

double a =(a-b)/(d+e); 

【问题讨论】:

    标签: c# .net double


    【解决方案1】:

    因为你在这里所做的是整数除法1 / 4 总是给你0 作为结果,不管你是什么类型的。

    .NET 有 3 种类型的划分。来自7.7.2 Division operator

    • 整数除法
    • 浮点除法
    • 小数除法

    整数除法部分;

    除法将结果向零舍入,并且绝对值 结果是小于 两个操作数的商的绝对值。

    如果您想要0.25 作为结果,您应该将其中一个值定义为浮点数。

    您可以使用其中一种;

    double d = 1d / 4d;
    double d = 1d / 4;
    double d = 1 / 4d;
    

    如果语句是整数变量,我们该怎么办 像这样

    双a =(a-b)/(d+e);

    我假设您的 abde 是整数,那么您应该使用其中之一;

    double a = (double)(a-b) / (double)(d+e);
    double a = (a-b) / (double)(d+e);
    double a = (double)(a-b) / (d+e);
    

    【讨论】:

    • 如果 w 有这样的整数变量语句,我们应该怎么做 double a=(a-b)/(d+c)
    • @HotCoolStud 我更新了我的答案。看看吧。
    【解决方案2】:
    double d =1d/4; 
    

    应该可以。 如果您未指定数字的类型,则将其视为整数。整数 1/4 将为零。

    【讨论】:

    • 如果 w 有这样的整数变量语句,我们该怎么办 double a=(a-b)/(d+c);
    • 至少将一侧投射到两倍?
    【解决方案3】:

    使用这个:

    double d = (double) 1 / 4;
    

    【讨论】:

      【解决方案4】:

      / 运算符 (msdn)

      当你将两个整数相除时,结果总是一个整数。为了 例如,7 / 3 的结果是 2。要确定 7 / 的余数 3、使用余数运算符(%)。获得商作为有理数 数字或分数,给出除数或除数类型 float 或类型 。如果您表示除数,则可以隐式分配类型 或除数作为小数通过将数字放在右侧 小数点。

      试试这个:

      double d = 1.0 / 4.0;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-29
        • 1970-01-01
        相关资源
        最近更新 更多