我有一个文本文件,其中科学记数法中的数字存储为字符串字符,其中一些字符最多包含20
个数字。例如,2.3456789e-015
。我需要将其转换为long double,以便对其执行一些数学运算。
我该如何做到这一点?
long double number = 2.3456789e-015;
我知道我可以像这样声明 long double ,但是当我将数字作为字符串并且需要分别指定基数和指数时,就会遇到麻烦。 pow()
功能仅适用于双打,而cpowl()
无法在printf
中进行格式化。保持精确度非常重要!!
答案 0 :(得分:2)
如果要将字符串转换为long double,请使用[stold][1]
如果您希望printf
加倍,请使用%Lf
。
答案 1 :(得分:1)
sscanf(str, "%lf", &number)
了解任何格式。 scanf和sscanf允许检查转换结果:
if( sscanf(str, "%lf", &number) )
{
printf("number = %le\n", number);
}
答案 2 :(得分:0)
尝试double atof(const char*)
。