我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

whuestc





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 101
威望: 0
浮云: 1167
在线等级:
注册时间: 2006-04-26
最后登陆: 2007-05-14

5come5帮你背单词 [ contrary /'kontrəri/ a. 对立的,相反的;n. 反面,相反 ]


C语言问题

那个晓得,用C语言,怎样才能够做到
20除以3,结果保留2位小数(6。67)
谢谢
顶端 Posted: 2006-09-03 21:52 | [楼 主]
debuger





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 410
威望: 0
浮云: 1227
在线等级:
注册时间: 2004-12-25
最后登陆: 2007-04-10

5come5帮你背单词 [ brutal /'bru:tl/ a. 残忍的,野蛮的 ]


Quote:
引用第0楼whuestc于2006-09-03 21:52发表的C语言问题:
那个晓得,用C语言,怎样才能够做到
20除以3,结果保留2位小数(6。67)
谢谢


手动……
或者用专gate的运算库
顶端 Posted: 2006-09-03 22:27 | [1 楼]
debuger





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 410
威望: 0
浮云: 1227
在线等级:
注册时间: 2004-12-25
最后登陆: 2007-04-10

5come5帮你背单词 [ visibility /vizi'biliti/ n. 能见度 ]


Quote:
引用第5楼buguty于2006-09-03 22:36发表的:
你可以先将结果加上你得到的结果(县永浮点数比表示)然后加上结果
乘以10的四舍五入的数减去原来没有处理过的数乘以10的结果除以100的结果就可以了然后再格式化输出就行了。

比如用变量 float   a;
表示结果
.......

麻烦了……

还有更简单的方法……

麻烦的地方在于处理2进制逼近的问题,如果对数据要求非常严格的话……
顶端 Posted: 2006-09-03 22:45 | [2 楼]
debuger





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 410
威望: 0
浮云: 1227
在线等级:
注册时间: 2004-12-25
最后登陆: 2007-04-10

5come5帮你背单词 [ digital /'did3əitl/ a. 数字的 ]


Quote:
引用第7楼buguty于2006-09-03 22:47发表的:



愿听高见。我暂时想不出好的方法。。汗。。。。。

直接加0.005,然后snprintf格式化
顶端 Posted: 2006-09-03 22:56 | [3 楼]
debuger





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 410
威望: 0
浮云: 1227
在线等级:
注册时间: 2004-12-25
最后登陆: 2007-04-10

5come5帮你背单词 [ investigate /in'vestigeit/ v. 调查,调查研究 ]


Quote:
引用第10楼zc1984于2006-09-03 22:53发表的:
注意一个很小的细节——
并不是真正的四舍五入的哦~~~

有兴趣的蝈蝈可以google一下相关的资料,

.......

??
什么意思?
银行计算为了避免临头问题,是用的一次进位,一次不进的方法,概率证明这样不会导致因为积累造成问题
顶端 Posted: 2006-09-03 22:57 | [4 楼]
debuger





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 410
威望: 0
浮云: 1227
在线等级:
注册时间: 2004-12-25
最后登陆: 2007-04-10

5come5帮你背单词 [ salesman /'seilzmən/ n. 售货员 ]


不过手动计算始终不是太好的方案,推荐几个函数吧

#include <math.h>

long lround(double x);
long lroundf(float x);
long lroundl(long double x);
double nearbyint(double x);
float nearbyintf(float x);
long double nearbyintl(long double x);
double nextafter(double x, double y);
float nextafterf(float x, float y);
long double nextafterl(long double x, long double y);
double nexttoward(double x, long double y);
float nexttowardf(float x, long double y);
long double nexttowardl(long double x, long double y);

自己看看文档
顶端 Posted: 2006-09-03 23:04 | [5 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.013804(s) query 8, Time now is:05-29 06:54, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号