我有这个:
double result = 60 / 23;
Run Code Online (Sandbox Code Playgroud)
在我的程序中,结果是2,但正确的是2,608695652173913.哪里有问题?
Jam*_*unt 51
60和23是整数文字,因此您进行整数除法然后分配给double.整数除法的结果是2.
尝试
double result = 60.0 / 23.0;
Run Code Online (Sandbox Code Playgroud)
或者等价
double result = 60d / 23d;
Run Code Online (Sandbox Code Playgroud)
d后缀通知编译器你打算写一个双字面.
Jav*_*ram 18
你可以使用以下任何一个都给2.60869565217391:
double result = 60 / 23d;
double result = 60d / 23;
double result = 60d/ 23d;
double result = 60.0 / 23.0;
Run Code Online (Sandbox Code Playgroud)
但
double result = 60 / 23; //give 2
Run Code Online (Sandbox Code Playgroud)
说明:
如果任何一个数字是双倍,它将给出一倍
编辑:
文档
表达式的评估根据以下规则执行:
如果其中一个浮点类型为double,则表达式求值为double(或者在关系或布尔表达式的情况下为bool).
如果表达式中没有double类型,则计算为float(或者在关系表达式或布尔表达式的情况下为bool).
它会工作
double result = (double)60 / (double) 23;
Run Code Online (Sandbox Code Playgroud)
或者等价
double result = (double)60 / 23;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2630 次 |
| 最近记录: |