当前位置: 首页 > 知识库问答 >
问题:

用C语言打印IEEE标准中的浮点数(十六进制)

湛博易
2023-03-14

我想打印IEEE标准表示法中两个浮点数的十六进制值(符号、8位指数、23位尾数)。。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>

float RandVectorGen(void);

int main () {

    srand(time(NULL));

    float Vectors_A = 0, Vectors_B = 0, Vectors_SUM = 0; 

            for(int i = 0; i <= 20; ++i) {
                
                Vectors_A = RandVectorGen();      //Genera 20 vettori tra 100 e 0
                Vectors_B = RandVectorGen();

                printf("Vettore %d_A: %x  =>  %.6f\n", i, Vectors_A, Vectors_A);
                printf("Vettore %d_B: %x  =>  %.6f\n", i, Vectors_B, Vectors_B);

                Vectors_SUM = Vectors_A + Vectors_B;            

                printf("Somma tra i due vettori: %x  =>  %.6f\n", Vectors_SUM, Vectors_SUM);

                puts(" ");

                }

    return 0;

}

float RandVectorGen (void) {

    
    unsigned int Vector1, Vector2;
    float RandomVector = ((float)Vector1 / (float)Vector2) * fabs(sin(rand() % 10));

        Vector1 = (rand() % 30);
        Vector2 = (rand() % 30);

    return RandomVector;
}

共有2个答案

席兴朝
2023-03-14

您的随机向量是随机的,因为它基于未初始化的值,这是未定义的行为。在此之后,您仅将值分配给向量1和向量2,但从不使用这些值。您应该这样尝试:

float RandVectorGen (void)
{
    unsigned int Vector1, Vector2;
    float RandomVector;

    Vector1 = (rand() % 30);
    Vector2 = (rand() % 30);
    
    RandomVector = ((float)Vector1 / (float)Vector2) * fabs(sin(rand() % 10));

    return RandomVector;
}
干照
2023-03-14

在没有流量控制的情况下,C从上到下运行。因此,当您使用两个未初始化的变量初始化随机向量时,您会得到未定义的行为。稍后为向量1和向量2指定两个值并不重要。

 类似资料:
  • 我正在尝试将十六进制数据添加到十六进制字符串中,我需要使用它们的IEEE表示将浮点数添加到该字符串中。对于整数,这很简单: 其中value是数字的VARCHAR,params是包含十六进制字符串的VARCHAR。这个技巧适用于整数,但对于十进制,它会截断十进制部分,并将整数部分转换为十六进制整数。如果十进制的大小是固定的(java float或double),如何将值转换为十进制数的IEEE浮点表

  • 问题内容: 我正在尝试将以下十六进制字符串转换为“ 41630D54FFF68872”到9988776.0(float-64)。 使用单精度float-32,我可以这样做: 但这会引发:java.lang.NumberFormatException:使用上面的64位十六进制时,Infinite或NaN。 如何将十六进制转换为使用64位IEEE-754编码的双精度浮点数? 谢谢 问题答案: 您需要双

  • 问题内容: 我有一个以指数形式输出的数字: 如何使它以普通格式打印? 问题答案: 您可以将其格式化为定点数字。

  • 本文向大家介绍C语言中十六进制转十进制两种实现方法,包括了C语言中十六进制转十进制两种实现方法的使用技巧和注意事项,需要的朋友参考一下 C语言 · 十六进制转十进制 问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 思路:感觉自己的

  • 问题内容: 如何在Python中将以下十六进制字符串转换为float(单精度32位)? 问题答案: 在 Python 3中 : 在 Python 2中 :

  • 问题内容: 我必须将,以s 表示(例如)转换为浮点值( IEEE-754 转换)。我没有使用strconv.ParseFloat函数做到这一点。还有什么我要用的吗?到目前为止我找不到。我也尝试先将其转换为整数,然后转换为浮点数,但结果是错误的。 我最后一次尝试的代码: 问题答案: 首先,需要说明输入的位长。由于十六进制表示形式有4个字节(8个十六进制数字),因此很可能是a (需要询问者澄清)。 您