c - C语言中如何将char类型转换为double类型?

标签 c char double

我想将“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/

相关文章:

java - 如何查看 double 是否包含给定的整数?

c# - 双倍于带强制小数点的字符串

java - 使用单个循环打印菱形数字?

c - 处理通过引用 C 传递的二维数组时出现问题

java - 为什么 int 参数允许传递 char 值,但 char 参数不接受传递 int 值?

swift - 无法将类型 'Int' 的值转换为预期的参数类型 '[CChar]'(又名 'Array<Int8>')

c++ - 无法将参数 'std::basic_string<char>' 的 'const char*' 转换为 '1' 到 'int system(const char*)'

c++ - 如何在 C++ 中的同一函数中使用字符串和 double

c - 编译器在返回本地指针时不发出警告

c - realloc() 发出 : deallocation of old block, 新大小大于旧大小,并传递静态数组基地址