C#简单划分问题
我有这个:
double result = 60 / 23;
在我的程序中,结果是2,但正确的是2,608695652173913。 哪里有问题?
你可以使用以下任何一个都给2.60869565217391 :
double result = 60 / 23d; double result = 60d / 23; double result = 60d/ 23d; double result = 60.0 / 23.0;
但
double result = 60 / 23; //give 2
说明:
如果任何一个数字是双倍 ,它将给出一个双倍
编辑:
文档
表达式的评估根据以下规则进行:
60和23是整数文字,因此您进行整数除法然后分配给double。 整数除法的结果是2。
尝试
double result = 60.0 / 23.0;
或者等效
double result = 60d / 23d;
d后缀通知编译器你打算写一个双字面。
它会工作
double result = (double)60 / (double) 23;
或者等效
double result = (double)60 / 23;
(双)60/23
暂时没有使用过C#,但是你要划分两个整数,据我所记得的那样,结果也是一个整数。
您可以通过添加字母“d”强制您的数字文字加倍,喜欢这样:
double result = 60d / 23d;
double result = 60.0 / 23.0;
最佳做法是正确装饰适当类型的数字。 这不仅可以避免您遇到的错误,还可以使代码更具可读性和可维护性。
double x = 100d; single x = 100f; decimal x = 100m;
将被除数和除数转换为double值,因此结果是double
double res = 60d / 23d;
添加到目前为止所说的内容… 60/23是对两个常量的操作。 编译器将结果识别为常量并预先计算答案。 由于操作是两个整数,编译器使用整数结果60/23的整数运算结果为2; 所以编译器有效创建以下代码:
double result = 2;
正如已经指出的那样,您需要告诉编译器不要使用整数,将一个或两个操作数更改为非整数将使编译器使用浮点常量。
上述就是C#学习教程:C#简单划分问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/953384.html