首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个算术运算有什么问题?

这个算术运算有什么问题?
EN

Stack Overflow用户
提问于 2015-10-09 16:20:53
回答 3查看 35关注 0票数 0

例如,当我写下以下代码时:

代码语言:javascript
运行
复制
double d = (4/3)*6; 

为什么它将4/3视为1(int?)不是1.333,结果是6而不是8?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-10-09 16:21:42

4/3等于1,因为它使用整数除法将两个整数相除。4.0/3会给出你所期望的结果,因为它将使用浮点除法。

票数 2
EN

Stack Overflow用户

发布于 2015-10-09 16:23:12

您正在计算整数形式的值,并将结果赋值为双精度值,但结果仍然是一个整数。您可以通过将第一个操作数设置为双精度(或者如果它们是输入变量乘以1.0)来强制进行浮点运算:

代码语言:javascript
运行
复制
double d = (4.0/3)*6; 

如果值是输入:

代码语言:javascript
运行
复制
int a = 4;
int b = 3;
int c = 6;

您可以通过乘以1.0来强制转换:

代码语言:javascript
运行
复制
double d = (a*1.0/b)*c; 
票数 0
EN

Stack Overflow用户

发布于 2015-10-09 16:24:28

因为每个没有指定的数字都是作为整数处理的。

如果你使用1.0,它将是一个双倍的。

对于其他格式,您可以使用1f表示浮点型,使用1l表示长整型,或者使用1d表示双精度型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33033336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档