发件人:Douglas A. Gwyn
主题:Re: double 的精度?
日期:2000年8月18日 00:00:00 GMT
Message-ID:<clcm-20000818-0004@plethora.net>
Newsgroups:comp.lang.c.moderated
“rhim.m”写道:
“我正在寻找一个函数,例如:”
> void setprecision(int precision , double in, double *out ) .
“这个函数可以设置 double 的精度(小数点后的位数)。”
“例如,输入是 double ‘35.425’ 和精度 ‘1’;”
“输出是 ‘35.4’。”
这通常称为“四舍五入”。这其实并不难。
#include <assert.h> #include <math.h> double round2mod(double x, double module) { if (module == 0) return x; assert(module > 0); if (x < 0) return -round2mod(-x, module); return x + module/2 - fmod(x + module/2, module); } void setprecision(int precision, double in, double *out) { *out = round2mod(in, pow(10, -precision)); }--