3

这甚至可能吗?我试图用谷歌搜索,但我似乎找不到正确的答案。

我需要限制小数位,因为如果只有 3 个小数位而不是 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);
}

谢谢

4

2 回答 2

2

做不到。Afloat是我曾经使用过的每个 C 编译器中的 32 位浮点值。该语言没有任何标准可以重新定义其工作方式。

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

C++定点库?

于 2013-02-01T02:44:45.590 回答
2

可以办到!

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

诀窍是:

  1. 将所需位数移至小数点左侧。
  2. 截断小数点右侧的所有数字。
  3. 将所需位数移回小数点右侧。
于 2013-02-01T03:39:11.607 回答