如何获取任意实数的精度(多少位小数位)?
有一序列,准备要生成Histogram,即柱状图。
如果序列数值为1 2 3 4 2。。 或者 0.1 0.1 0.2 0.3 0.4 统一精度的,问题比较容易。
但是序列如果是0.1 0.2 0.3 6 0.05 这样不等精度的,就比较麻烦,现在需要获得序列的最高精度,和最低精度,将最低精度的按某个准则,比如四舍五入来变为最高精度来生成统一的柱状图。
请问用什么函数能获得一个实数的精度啊?
问题点数:50、回复次数:2Top
1 楼lihongxing2002(潇洒)回复于 2004-12-06 09:17:50 得分 0
upTop
2 楼netsys2(来电!)回复于 2004-12-06 12:25:58 得分 50
花了30分钟来研究。
-------------
浮点数和DOUBLE的数值是不定的!
你看看下面的例子:
float f = 123.456;
AnsiString s = AnsiString(f);
ShowMessage(s);
你显示出来的结果绝对不是 123.456。
在计算机处理中,你需要几位精度,它就四舍5入返回几位!
再看看下面的:
char ss[20];
float f = 123.456;
sprintf(ss,"%5.3f",f);
ShowMessage(ss);
现在显示出正确的结果。
因此是你来判断有几位精度,而是它本身就限制了为8,16位。
你需要几位,它就给你几位。
对于你的题目来说,
你应该根据你的经验来选择一个精度,或者你在采集数据时全部乘以一个整数
如(10000),然后忽律小数,
这样你可以很简单地判断出整数的位数,同样能满足你显示的要求。
Top




