c++使用IEEE 754将浮点数转换为基数10

C++ converting floating point to base 10 using IEEE 754

本文关键字:转换 浮点数 使用 IEEE c++      更新时间:2023-10-16

我能够显示二进制数字的浮点表示,包括符号、指数和分数。但是如果我想把它转换成以10为基数的符号,指数和分数,我该怎么做呢?一个例子可以像浮点数表示12:

Sign Bit = 0

指数= 130

分数= 4194304

#include "stdafx.h"
#include<stdio.h>
#include<iostream>
 using namespace std;
void binary(int n, int i)
{
    int k;
    for (i--; i >= 0; i--)
    {
        k = n >> i;
        if (k & 1)
            printf("1");
        else
            printf("0");
    }
}

typedef union
{
    float f;
    struct
    {
        unsigned int mantissa : 23;
        unsigned int exponent : 8;
        unsigned int sign : 1;
    } field;
} myfloat;
int main()
{
    myfloat var;
    printf("Enter any float number: ");
    scanf_s("%f", &var.f);
    cout << "SignBit = ";
    printf("%d ", var.field.sign);
    cout << endl;
    cout << "Exponent = ";
    binary(var.field.exponent, 8);
    printf(" ");
    cout << endl;
    cout << "Fraction = ";
    binary(var.field.mantissa, 23);
    printf("n");
    return 0;
}

直接打印出来。

cout << var.field.mantissa << ' ' << var.field.exponent << ' ' << var.field.sign << 'n';