Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双重与除法问题_C#_.net_Math_Double_Division - Fatal编程技术网

C# 双重与除法问题

C# 双重与除法问题,c#,.net,math,double,division,C#,.net,Math,Double,Division,可能的重复项: 嗨 也许是因为今天是星期五,但我不能理解: (Double)1/2 = 0.5 (Double)1/(Double)2 = 0.5 (Double)((Double)1/(Double)2) = 0.5 (Double)(1/2) = 0.0 为什么最后一个操作是0?: 问候您。因为1和2是整数。结果是0。如果你将其转换为双精度,它仍然是0。这个问题几天前才被问到。试试(double)(1.0/2.0)-这将给出你期望的答案。如果你除以两个整数,那么结果也将是整数。因此1/

可能的重复项:

也许是因为今天是星期五,但我不能理解:

(Double)1/2 = 0.5
(Double)1/(Double)2 = 0.5
(Double)((Double)1/(Double)2) = 0.5
(Double)(1/2) = 0.0
为什么最后一个操作是0?:


问候您。

因为1和2是整数。结果是0。如果你将其转换为双精度,它仍然是0。这个问题几天前才被问到。

试试(double)(1.0/2.0)-这将给出你期望的答案。

如果你除以两个整数,那么结果也将是整数。因此1/2给你一个整数。然后将0转换为double,该值仍然为零。

如前所述,问题在于类型。您可以使用以确保类型正确:

1d/2d=0.5

到目前为止,每个人都给了你正确的答案,我添加了这个,这样其他读者就不会在评论中错过它

使用与常规数学相同的规则。首先是内括号。因此,在第一个示例中,1在除法发生之前被强制转换为double,从而使结果成为double(int和double的除法产生double)。如果它是
(Double)1/2
1/(Double)2
,则此为真。所以在最后一个例子中,
(Double)(1/2)
,首先执行
(1/2)
,int-on-int,得到int。然后(Double)将其转换为Double。希望这不仅能帮助你,也能帮助任何对这个问题感到好奇的人。我自己也有过很多次,我有一个很长的方程,我必须把方程的每个参数都转换成一个双精度的

  • (双精度)1/2=0.5
  • (双精度)1/(双精度)2=0.5
  • (Double)((Double)1/(Double)2)=0.5
  • (双精度)(1/2)=0.0

  • 在前三种情况下,您将整数值(当您不使用后缀或不包含点时,thas是数字的默认类型)强制转换为双精度,然后在第一种情况下使用整数值进行除法,在第二种情况下使用双精度对2和3进行除法,而在最后(4)种情况下,括号会改变操作顺序,首先将两个整数除法,然后将结果加倍

    可能是因为这样,你不应该问这样的问题。那是我的问题,为什么SO@Ravi-这是一个有效的问题,尽管我相信以前有人问过这个问题。我看不出有什么理由downvote@Ravi,这个问题有什么不好?@LittleBobby:如果你理解(需要)
    (double)1/2
    ,最后一个问题也很明显。很抱歉,我没有在相关的问题中找到它。。。我现在要进行更深入的搜索。就是我刚才说的那个复制品。由于标题的描述性不强,所以在搜索中很难找到。:-)