【发布时间】:2017-04-10 05:04:41
【问题描述】:
我正在尝试计算 Maxwell-Boltzmann 分布,但这段代码给出了 0.00000,这是什么问题?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
float e=2.718228183, pi=3.14159265, m=2.66*pow(10,-23), t, k=1.38*pow(10,-23), v, result;
scanf("%f %f", &t, &v);
result = sqrt(pow( m / (2*pi*k*t), 3)) * 4 * pi * pow(v,2) * pow(e, -(m * pow(v,2)) / (2*k*t));
printf("%f", result);
}
【问题讨论】:
-
代码为 what 输入值提供
0.000000? -
它应该打印什么?顺便说一句,我不知道您为什么使用
float。您的系统无法使用double吗? -
double 也给出 0.000000 @WeatherVane
-
请注意,数学库提供了 e 和 π 的值,还有函数
exp可以完成您正在使用的 @ 987654326@for. -
旁白:您的玻尔兹曼常数为
k=1.38*pow(10,-23)。我建议k=1.3806485279e-23。同样,您对m的初始化也不必要地调用了pow函数。
标签: c precision floating-accuracy scientific-computing