我想将“12345678901234567890.123”这样的字符转换为 double , 所以我使用 sscanf(str, "%lf", &d), 我使用 printf("%20.3lf", d); 打印它
但我得到的结果是“12345678901234567178.000”,
如何修复它?
最佳答案
您可能不能,因为您尝试存储的数字的精度超出了您机器的 double
数据类型的范围。
您需要使用一个大数库,它可以“手动”计算任意位数的数字,因此可以超出机器基本数据类型的限制。
哦,“12345678901234567890.123”
不是“字符”,它被称为“字符串”。
关于c - C语言中如何将char类型转换为double类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232846/