非常困惑,,,,用C分开[英] Very confused,,,, divide in C

问题描述

大家好

在我的代码中,我有一些东西 a=b+(1/3);(a 和 b 是两个双精度
变量)

结果总是 (1/3)=0,我得到了错误的答案 a=b.我
必须将其替换为 a=b+0.333 才能得到正确答案.

如何克服这个问题?

谢谢

推荐答案

VijaKhara <Vi*******@gmail.com 写了:
结果总是 (1/3)=0
对.1/3的整数结果是0.你想要的是1.0/3.0.
如何克服这个问题?
听起来您可能想再次检查教科书.

--
C. Benson Manica |我*应该*知道我在说什么——如果我
cbmanica(at)gmail.com |不要,我需要知道.欢迎火焰.

VijaKhara <Vi*******@gmail.com 写道:
在我的代码中,我有一些东西 a=b+(1/3);(a 和 b 是两个双精度
变量)
结果总是 (1/3)=0,我得到了错误的答案 a=b.我
必须用 a=b+0.333 替换它才能得到正确的答案.
不,您必须将 1/3 替换为 1.0/3 或 1/3.0 或 1.0/3.0.
如果两个操作数都是整数所谓的整数除法
用于结果仅为
的整数部分的情况除法的结果.但是如果一个(或两个)num-
bers 是浮点值"正常";使用除法.

问候,延斯
--
\ Jens Thoms Toerring ___ jt@toerring.de
\__________________________ http://toerring.de

在文章 <11**********************@h2g2000hsg.googlegroups.com>,
VijaKhara <Vi*******@gmail.com 写道:
>在我的代码中,我有一些东西 a=b+(1/3);(a 和 b 是两个双
变量)
>结果总是(1/3)=0,我得到了错误的答案a=b.我
必须将其替换为 a=b+0.333 才能得到正确答案.
>如何解决这个问题?
a=b+(1./3)



a=b+(1/3.)



a=b+(1./3.)
你遇到的问题是1和3都是
整数,所以它正在做一个整数除法.C不-不-看起来
在周围的表达式中,以确定哪个结果
输入你的"意思":它只查看两个操作数的类型
的运营商.(但是,运算符的两个操作数并不总是
最明显的两个最接近的变量:你必须考虑到
帐户运算符优先级.例如,在 a=b*c/d 中
除法的操作数不是 c 和 d:它们是 (b*c) 和 d
因为乘法运算符从左到右关联.)
--
编程是您忙于制定其他计划时发生的事情.

本文地址:https://www.itbaoku.cn/post/1050372.html