2011-10-22 63 views
0

在C中,将格式为“293.0000”的字符串转换为浮点型结果2.93的最佳方式是什么?将小数点后的字符串转换为整数

顺便说是不是也可以用printf的去除小数,并获得293

+5

2.93是*不是*整数。 –

+0

我的意思是2.93所以一个浮动。 – veccy

+0

你能澄清一下吗?你说一个字符串转换为整数2.93?如果你的意思是293,那不是一个整数。你可以使用atoi将一个字符串转换为一个整数。然后,您可以使用格式中的%d打印此文件。 –

回答

0
char *myNum = "293.0000"; 
double myDouble = atof(myNum); 
int myInt = (int)myDouble; 
myDouble /= 100; 
printf("double: (%.2f) %f, int: %d\n", myDouble, myDouble, myInt); 

输出:

双:(2.93)2.930000,INT:293

需要注意的是浮点类型将会有超过精度2个小数点。当你输出它们时,你需要限制它到你想要的。

+0

我得到这个输出double:(.22.930000)2.930000,int:293 – veccy

+0

这是因为在答案中存在拼写错误,它应该是printf语句中的(%.2f)。 – Milan

+0

哎呦 - 对不起,正在修复 –

0

因此我假设你想在“293.00000”字符串转换为293.

整数值

这不是最快的方式,你需要的C库(在内核空间无法使用它),但它是一个干净的和直接的方法:

float tmp; 
long result; 

sscanf("293.00000", "%f", &tmp); 

result = lrintf(tmp);