声明float变量只包含3个小数位

时间:2013-02-01 02:41:02

标签: c

这甚至可能吗?我试图谷歌它,但我似乎无法找到正确的答案。

我需要限制小数位,因为如果只有5位小数,那么答案真的会有所不同,所以我希望你可以帮我解决这些问题。我知道如何打印3个小数位但是声明一个变量只能容纳3个小数位是我不知道的。如果你有任何链接我也可以使用。

float sinfa(float num1)
{
    float fc;
    float powers;
    float rad_angle;

    rad_angle = num1 * (PI / 180.0);
    powers = pow(num1,4);
    fc = sin(rad_angle)-powers+1;
    return (fc);
}

float sinfb(float num2)
{
    float fd;
    float powerss;
    float rad_angle1;

    rad_angle1 = num2 * (PI / 180.0);
    powerss = pow(num2,4);
    fd = sin(rad_angle1)-powerss+1;
    return (fd);
}

float tp(float fa,float fb,float num1,float num2)
{
    float p;
    float fm2 = fa*num2;
    float fm1 = fb*num1;
    p = (fm2-fm1)/(fa-fb);
    return (p);
}

float sinp(float p1)
{
    float fop;
    float ppowers;
    float rad_angle2;

    rad_angle2 = p1 * (PI / 180.0);
    ppowers = pow(p1,4);
    fop = sin(rad_angle2)-ppowers+1;
    return (fop);
}

谢谢

2 个答案:

答案 0 :(得分:2)

无法完成。 float是我曾经使用的每个C编译器中的32位浮点值。语言中没有任何标准可以重新定义它的工作原理。

可以编写一组定义函数,用于存储乘以1000的值,或者使用以任意精度实现定点的通用库,并将精度设置为3位十进制数。 / p>

C++ fixed point library?

答案 1 :(得分:2)

可以做到!

int intVal = 1.234567 * 1000;          // result: 1234
float floatVal = (float)intVal / 1000; // result: 1.234

诀窍是:

  1. 将所需的位数移动到小数位的左侧。
  2. 截断小数位右侧的所有数字。
  3. 将所需的位数移回小数位的右侧。