| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 934 人关注过本帖
标题:这个数字为什么要进位呢
只看楼主 加入收藏
震中地带
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:171
专家分:359
注 册:2012-3-26
收藏
得分:0 
回复 9楼 TonyDeng
谢谢!确实是不知道这个功能
2012-06-04 22:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
printf()本身有四舍五入功能。但是需要注意,即使printf()没有这种功能,但按1楼的算法这样做,要留意陷阱:乘以100的时候,防止数据溢出!虽然较小的数字通常不会溢出,但作为算法,是要考虑的,要么在代码上面注释清楚。更严重的隐患,可能在计算机储存浮点数的机制上,乘除100,人看起来问题不大,但计算机未必,有可能失真的。

[ 本帖最后由 TonyDeng 于 2012-6-4 23:35 编辑 ]

授人以渔,不授人以鱼。
2012-06-04 23:33
a6717079
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-4-17
收藏
得分:0 
回复 2楼 icysky
我本来只想截取前两位,不知道%.2f有进位的功能。

[ 本帖最后由 a6717079 于 2012-6-5 21:29 编辑 ]
2012-06-05 21:24
a6717079
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-4-17
收藏
得分:0 
回复 7楼 震中地带
这个本来是想编一个算法,对double数据类型进行四舍五入,结果保留两位有效小数。
思路是这样的:将数据乘100,加0.5是看是否需要进位,然后得到的数强制取整,再除以100,就得到想要的2位小数数据。
1
2012-06-05 21:38
a6717079
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-4-17
收藏
得分:0 
回复 12楼 TonyDeng
那我不想让它四舍五入,只截取呢,改怎么写?
2012-06-05 21:40
shanshan3003
Rank: 2
等 级:论坛游民
帖 子:53
专家分:66
注 册:2011-8-29
收藏
得分:0 
也就是说强制转换就不是四舍五入,而这样运算就是四舍五入了,真的是啊!
2012-06-05 21:57
shanshan3003
Rank: 2
等 级:论坛游民
帖 子:53
专家分:66
注 册:2011-8-29
收藏
得分:0 
强制转化了
2012-06-05 21:58
怪敏宝宝
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-6-6
收藏
得分:0 
a = 123.453643
b = 12345.8643
c = 123.458643
保留小数点后两位不就是123.46了
2012-06-06 18:02
快速回复:这个数字为什么要进位呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018213 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved