发件人: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));
        }
--
comp.lang.c.moderated - 版主地址:clcm@plethora.net