小编LJ *_*eng的帖子

C++或C中浮点乘法的最佳实践?

我需要执行400*256.3的简单乘法.结果是102520.直线前进,简单.但是在C++(或C)中实现这种乘法对我来说有点棘手和困惑.

我知道浮点数不代表它在计算机中.我写了代码来说明情况.输出也附加了.

所以,如果我使用float类型变量进行乘法运算,我会遇到舍入误差.使用double类型变量可以避免这个问题.但是,假设我在嵌入式系统上的资源非常有限,我必须尽可能地优化变量类型,如何使用float类型变量执行乘法并且不容易出现舍入误差?

我知道计算机完成的浮点运算并没有被打破.但我很好奇进行浮点数学的最佳实践.256.3只是一个插图的值.我不知道在运行时我会得到什么浮点值.但它肯定是一个浮点值.

int main()
{
    //perform 400 * 256.3
    //result should be 102520

    float floatResult = 0.00f;
    int intResult = 0;
    double doubleResult = 0.00;

    //float = int * float
    floatResult = 400 * 256.3f;
    printf("400 * 256.3f = (float)->%f\n", floatResult);

    //float = float * float
    floatResult = 400.00f * 256.3f;
    printf("400.00f * 256.3f = (float)->%f\n", floatResult);

    printf("\n");

    //int = int * float
    intResult = 400 * 256.3f;
    printf("400 * 256.3f = (int)->%d\n", intResult);

    //int = float * …
Run Code Online (Sandbox Code Playgroud)

c precision multiplication floating-accuracy

0
推荐指数
2
解决办法
5190
查看次数

标签 统计

c ×1

floating-accuracy ×1

multiplication ×1

precision ×1