怪异的数,int a = (int)(2.3 *100)到底返回多少,请试一试!! double八字节int四字节所以强制类型转换有问题不奇怪。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 浮点数在内部表示时一般只能逼近整数值,而不是等于所以浮点数取整时最好做一下4舍5入int b = (int) (2.3*100 + 0.5);就不会有任何问题 int b = (int)(a * 100 + 0.5);从double转换到int是去尾法,如果乘法结果是229.9999999999999999999b的结果仍然是229,这就是你遇到的问题 我已问过这个相同的问题,没有什么结果我认为对double型数取整,稳妥一些的方法是double a=100*(100.3-100);int b=int(a+1e-10); 补充一下,那个1e-10取决于a值的大小,如a小数点前有效数多,也许只能是1e-8等。4舍5入不行,比如:double a=2.999;取整后我们需要的是2,但int b = (int)(a * 100 + 0.5);变成了3。 万年不变的udp丢包问题 MFC对话框构造函数的一个问题 MFC数据类型转化时出现的问题... API函数CreateProcess的拦截---急!急! 请帮我解释三行程序,关于Event CPropertySheep做的wizard中,SetFinishText改变finish按钮的文字后,怎么改回来? ===看看这是什么?=== 各位谈谈串行口通讯 ShowWindow的问题 请教:关于在控件中添加文本 急待解决的难题,拜托各位! 如何获取当前机器的分辨率?(高度和宽度)
所以浮点数取整时最好做一下4舍5入
int b = (int) (2.3*100 + 0.5);
就不会有任何问题
b的结果仍然是229,这就是你遇到的问题
我认为对double型数取整,稳妥一些的方法是
double a=100*(100.3-100);
int b=int(a+1e-10);
4舍5入不行,比如:
double a=2.999;取整后我们需要的是2,
但int b = (int)(a * 100 + 0.5);变成了3。