C 将带小数的字符串转换为整数

C 将带小数的字符串转换为整数,c,C,在C语言中,将293.0000格式的字符串转换为浮点结果2.93的最佳方法是什么 顺便问一下,也可以使用printf删除小数,得到293的结果,我假设您正在尝试将293.00000字符串转换为293的整数值 这不是最快的方法,您需要的是C库,它不能在内核空间中使用,但它是一种简洁明了的方法: float tmp; long result; sscanf("293.00000", "%f", &tmp); result = lrintf(tmp); 输出: 双人:2.932.9300

在C语言中,将293.0000格式的字符串转换为浮点结果2.93的最佳方法是什么


顺便问一下,也可以使用printf删除小数,得到293的结果,我假设您正在尝试将293.00000字符串转换为293的整数值

这不是最快的方法,您需要的是C库,它不能在内核空间中使用,但它是一种简洁明了的方法:

float tmp;
long result;

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

result = lrintf(tmp);
输出:

双人:2.932.930000,内线:293


请注意,浮点类型的精度将超过2个小数点。当您输出它们时,您需要将其限制在您想要的范围内

我得到的输出是双精度的:.22.930000 2.930000,int:293这是因为答案中有一个输入错误,它应该是printf语句中的%.2f。我正要说atof转换为float,而不是double。幸运的是,我先查了一下;atof返回一个double,没有atod。但所有ato*功能都缺少错误检查。strto*函数使用起来比较复杂,但是可以处理像1.0e9999999999和hello这样的事情。你能澄清一下吗。你说把一个字符串转换成整数2.93?如果你的意思是293,那不是整数。可以使用atoi将字符串转换为整数。然后,您可以使用%d格式打印此文件。
char *myNum = "293.0000";
double myDouble = atof(myNum);
int myInt = (int)myDouble;
myDouble /= 100;
printf("double: (%.2f) %f, int: %d\n", myDouble, myDouble, myInt);