对Floating-Point Functions 了解的来看看

code_cold 2008-05-27 11:42:34
如何按保留小数点后指定几位修整一个float,比如

float XXfunc(float)
{
return XX;// 只保留小数点后5位
}
float f = 3254.1234;
XXfunc(f) == 3254.123; // 只保留小数点后3位
...全文
117 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuchao 2008-05-28
  • 打赏
  • 举报
回复
哦 如果要3254.1234做出来是3254.1230,XXFunc里面应该是
sprintf(toStr, "%7.3f", fNumber);
kuchao 2008-05-28
  • 打赏
  • 举报
回复
float小数点后精度是靠语言约定的。

我怀疑你可能想表达这样的想法

int XXFunc(float fNumber, char* toStr)
{
return sprintf(toStr, "%5.3f", fNumber);
}

int XXXFunc(const char* toStr, float& fNumber)
{
fNumber = atof(toStr);
return 0;
}

然后
char toStr[256];
float f1 = 3254.1234;
float ff1;
XXFunc(f1, toStr);
XXXFunc(toStr, ff1);

但是,这样ff1也只能是3254.1230
code_cold 2008-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arong1234 的回复:]
float的本质决定如果你用上面函数原型绝对无法实现。如果你认为你找到了方法,那么你的判断方法一定出了问题
[/Quote]

// 只保留小数点后3位
float XXX(float f)
{
char str[256];
sprintf(str, "%.3f", f);
return atof(str);
}
arong1234 2008-05-28
  • 打赏
  • 举报
回复
float的本质决定如果你用上面函数原型绝对无法实现。如果你认为你找到了方法,那么你的判断方法一定出了问题
code_cold 2008-05-28
  • 打赏
  • 举报
回复
如何 按保留小数点后 指定几位 修整一个float,比如


float XXfunc(float)
{
return XX;// 只保留小数点后3位
}
例如
XXfunc(3254.1234) == 3254.123; // 只保留小数点后3位
XXfunc(0.123467) == 0.123; // 只保留小数点后3位
XXfunc(3856.12) == 3856.12; // 只保留小数点后3位

是有办法能实现XXfunc的,只是我的办法太笨拙了,感觉C/C++可能有这个功能
code_cold 2008-05-28
  • 打赏
  • 举报
回复
你的意思我了解了,怪我没表达清楚
其实我只是要求小数点后保留的几位有效数一致就可以了,就是说3254.1230,3254.123都可以

这当然是个办法,可效率太低了
arong1234 2008-05-27
  • 打赏
  • 举报
回复
No way. C/C++的语言中不可能精确保留5位有效数字。
ZJU_Main 主页 下一页 ZJU 题型分类 文演整理版 2008-3-23 数论: 1007 Numerical Summation of a Series 简单题,还是蛮有意思的 1045 HangOver 简单题 1049 I Think I Need a Houseboat 简单题 1028 Flip and Shift 简单题,可以DP/BFS/……,但是实际上有数学方法可直接判断出来 1026 Modular multiplication of polynomials 简单题,有比较简单的好算法 1307 Packets 简单题,不过也蛮经典的…… 1312 Prime Cuts 简单题 1334 Basically Speaking 简单题 1337 Pi 简单题 1342 Word Index 简单题 1349 Four Quarters 简单题 1350 The Drunk Jailer 简单题 1352 Number Base Conversion 简单题 1353 Unimodal Palindromic Decompositions 规模不大,所以是简单题…… 1354 Extended Lights Out 简单题 1362 Game Prediction 简单题 1365 Mileage Bank 简单题 1382 A Simple Task 简单题 1383 Binary Numbers 简单题 1403 Safecracker 简单题 1408 The Fun Number System 简单题 1486 Color the Tree 简单题 1487 Playing Cards 简单题 1489 2^x mod n = 1 简单题,应该有好算法,不过枚举就可以过…… 1503 One Person "The Price is Right" 简单题,POI Eggs的翻版 1512 Water Treatment Plants 简单题,组合计数 1526 Big Number 简单题,不过O(1)和O(n)还是有区别的:) 1529 Enigmatic Travel 简单题,不过个人感觉题目描述很令人费解 1530 Find The Multiple 简单题 1537 Playing with a Calculator 简单题 1577 GCD & LCM 简单题,分区联赛的题…… 1005 Jugs 简单题 1543 Stripies 简单题 1569 Partial Sums 简单题 1062 Trees Made to Order 简单题 1070 Bode Plot 简单题 1073 Round and Round We Go 简单题,142857,我喜欢^_^ 1078 Palindrom Numbers 简单题 1086 Octal Fractions 简单题 1199 Point of Intersection 简单题 1104 Leaps Tall Buildings 简单题 1110

65,198

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧