C_and_CPP 板


LINE

※ 引述《lytn (sapphira)》之铭言: : 经过我自己测试的结果, : 在Dev-C++ 或是VC++里测试 : double a=4.9; : int b=a; //or int b=(int)a; : cout b; << b会等於 : 好像就是直接舍位了.想知道这是C++的标准预设吗? : 在C里面 math.h 还有提供 ceil() ,floor()来做进位跟舍位 : 但是我书上写的这两个函式的传回值都是double, : 如果真的要整数的话,势必还要转型,所以才会在意到底是转成怎麽样的. : 或是有没有可靠的预设函式可以直接拿到整数的? : 另外我是自己做一个ceil函式啦,也想知道这样搞跟#include<cmath> 之类的哪个比较快, : 因为我真的没有用很多cmath,math.h 里的东西. double 转 整数, 就单纯的 truncate. 这是标准, 不用担心. : int IntUp(double adouble){ //无条件进位 : int tempint; : tempint=adouble; : if(tempint<adouble){return (tempint+1);} : else{return tempint;} : }; : int Int_4_5(double adouble){ //四舍五入 : if(adouble>0){ : int temp=IntUp(adouble); : if((temp-adouble)<0.5){ : return temp; : } : else{ : return temp-1; : } : } : } 四舍五入比较单纯一点, 只要 int rounding(double val) { // 要留心 int 的 range 比 double 少 return (int) (val + 0.5); } 就够了 无条件进位比较复杂一点. (其实四舍五入视乎情况也 应该考虑一样的问题, 不过没那麽明显而已) 因为 浮点数 (double/float) 只是大约数. 刚好 12 的无条件进位, 一般人会觉得应该仍然要维持 12, 可是 12 在 memory 中可能是 12.000000000000001, 单从数值上看, 是 12点几, 又该需要进位. 这种情况你要定义你程式的最小计算单位, 再以此 adjust 你的数值. 比如你知道你的程式最多只会去到小数後4 位, 你可以: const double EPSILON = 0.00001; int ceil(double val) { return (int) (val - EPSILON + 1.0); } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82 ※ 编辑: adrianshum 来自: 202.155.236.82 (04/28 12:09)
1F:推 VictorTom:+0.5取int之前不是有讨论遇到负数可能会有问题@_@" 04/28 12:37
2F:推 yoco315:复数详细希望 04/28 12:47
3F:→ VictorTom:复数我也不会XD 不过, -4.9+0.5取int似乎是-4不是-5 :) 04/28 12:51
4F:→ adrianshum:嗯, 那加回 if val < 0 就 减 0.5 吧? :P 04/28 16:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP