嘿所以我正在返回有小数,整数,或总数的数的函数,但一直未能使其与以下任一方式工作:如何计算一个大双数中有多少个小数位?
乘以一个真正大量像10十亿不会因为innacurate路电脑店小数的工作,使2.3 2.2999575697
使用字符串流将数字转换为字符串,并计算字符不起作用,因为它要求您将流设置为精确度如果未设置为实际的小数位数,则要么带走要么添加不需要的'0'字符
那么我现在该做什么?有人请帮助=(感谢
,如果你想看到我的函数的麻木转换为字符串在这里它是:
////////////////////// Numbs_Digits ////////////////////////////////////////////////
template<typename T>
int Numbs_Digits(T numb, int scope)
{
stringstream ss(stringstream::in| stringstream::out), ss2(stringstream::in| stringstream::out);
unsigned long int length= 0;
unsigned long int numb_wholes;
ss2 << (int)numb;
numb_wholes = ss2.str().length(); ss2.flush();
bool all= false;
ss.precision(11); // HOW DO I MAKE THE PRECISION NUMBER THE NUMBER OF DECIMALS?
switch(scope){
case ALL: all = true;
case DECIMALS: ss << fixed << numb;
length += ss.str().length()- (numb_wholes +1); // +1 for the "."
if(all!= true) break;
case WHOLE_NUMBS:
length += numb_wholes;
if(all!= true) break;
default: break;}
return length;};
而不是给我们你的示例代码,它可能会更好,如果你能给出一个更清晰的问题描述。请提供一些数字和你期望的结果的例子。 – 2011-05-16 01:37:19
从你以前的问题来看,我建议阅读浮点实际工作原理。那么你就会明白为什么“双数中的小数”没有多大意义。 – hammar 2011-05-16 01:44:14
可能使用http:// stackoverflow。com/questions/4738768/printing-double-without-losing-precision – ThomasMcLeod 2011-05-16 03:42:07