首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >long long int运算

long long int运算
EN

Stack Overflow用户
提问于 2012-02-03 06:08:50
回答 4查看 430关注 0票数 0

我在C中有以下代码:

代码语言:javascript
复制
long long int a;
long long int b;
long long int c;
long long int d=a*b/c;

但是,我希望'd‘是双倍的。有没有一种方法,我可以乘以,除以long long int,并得到一个双精度值作为答案,同时保持3位小数的精度?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-03 06:13:26

long long int中的一个转换(至少)为double

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

Stack Overflow用户

发布于 2012-02-03 06:11:24

如果你这样做,你的数字不会溢出,你可以把所有东西都乘以1000。此外,请确保在除以对象之前始终将对象相乘。您可以转换为双精度值,但它可能会丢失信息。

票数 1
EN

Stack Overflow用户

发布于 2012-02-03 06:14:22

由于C表达式(包括子表达式)的求值通常不考虑它们出现的上下文,因此子表达式a*b/c将使用整数算法求值,这意味着截断除法。

如果要对整数值执行浮点运算,则需要将其转换为浮点类型。这在您的情况下应该是可行的:

代码语言:javascript
复制
long long int a;
long long int b;
long long int c;
/* Assign values to a, b, and c (!) */
double d = (double)a * b / c;

请注意,仅转换第一个操作数就足以在类型double中完成乘法和除法。

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

https://stackoverflow.com/questions/9120746

复制
相关文章

相似问题

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