注册 登录
编程论坛 C++教室

4/3 在C++中怎样表示 ?请问

SwanK 发布于 2013-01-19 23:55, 693 次点击
如题。谢谢!新手想不出,晚上睡不着。万谢!
11 回复
#2
yaobao2013-01-20 08:00
4/3
#3
wp2319572013-01-20 08:01
是3分之4 还是 4除3 后者等于1
#4
wp2319572013-01-20 08:51
double(4.0/3.0)
#5
qunxingw2013-01-20 09:22
是输出表现形式?
#6
yuccn2013-01-20 10:25
自己封装个类 来表示就行了
基本数据类型没有分数 ,只有小数的
#7
锋了2013-01-20 12:12
如楼上所说已经基本包含了你说问问题的可能意思了
#8
zhuanjia02013-01-20 19:59
我觉得楼主的意思应该是6楼那样
#9
zklhp2013-01-20 20:06
我觉得楼主想要实现的是以下两种东西

1 就是4/3的结果 这个在计算机里是浮点数 有精度问题 也就是 4/3*3一类的式子结果可能不是4
2 要实现分数 也就是 4/3*3的结果就是4 没有精度问题 这个貌似叫符号计算?

不知道楼主要实现什么
#10
SwanK2013-01-21 12:44
我算球体体积
v=4/3*3.14.r*r*r
得不出正确的答案
结果正如楼上说的
用v=4.0/3.0*3.14.r*r*r 就可以了。
也可以用 v=4/(float)3*3.14.r*r*r算出正确答案来。
我好高兴啊!请继续指教,看我说的对不?
感谢大家的热情回复!

#11
waterstar2013-01-21 16:52
得不出正确答案是直接把4/3弄成1了吧。所以用4.0代替就可以了。
#12
pangding2013-01-21 16:53
以下是引用SwanK在2013-1-21 12:44:24的发言:

我算球体体积
v=4/3*3.14.r*r*r
得不出正确的答案
结果正如楼上说的
用v=4.0/3.0*3.14.r*r*r 就可以了。
也可以用 v=4/(float)3*3.14.r*r*r算出正确答案来。
我好高兴啊!请继续指教,看我说的对不?
感谢大家的热情回复!

这涉及表达式类型的概念。

4 和 3 都是整数,4/3 就是整数间的除法,结果也是整数,类似小学的带余除法。用 4%3 可以得到相除的余数。不过 C 语言里的整数除法与带余除法的定义可能还有一些区别,主要体现在负数相除上。但 (a/b)*b + (a%b) = a 在 C 里应该是恒等式。
(double)4 / 3,是一个浮点数除以一个整数,只要有一个浮点数,就不是整数除法了,整个表达式也是浮点类型。4.0 / 3 也是一个道理。但 (double)(4/3) 是不行的,因为这是先除完结果已经是个整数了,再强转。
1