为什么我的浮点值无法正确打印?

2023-11-29

我正在尝试打印浮点值 0x40a00000 和 0xc0200000。但是我打印出来的值和根据 IEEE-754 浮点转换器的正确值(https://www.h-schmidt.net/FloatConverter/IEEE754.html)完全不同:

根据 IEEE 转换器我应该得到的值:

0x3F800000 = 5.00
0xBF000000 = -2.50

我运行时得到的值:

float tmp1 = 0x40a00000;
float tmp2 = 0xc0200000;

printf("tmp1 = %.2f\n", tmp1);
printf("tmp2 = %.2f\n", tmp2);

is

tmp1 = 1084227584.00
tmp2 = 3223322624.00

由于某种原因,我的 C 代码没有根据 IEEE 标准格式化浮点值的位,而是将它们格式化为带有小数点的 int


这些将十六进制数的浮点表示分配给浮点。

相反,请执行以下操作:

int i1 = 0x40a00000;
int i2 = 0xc0200000;
float tmp1, tmp2;
memcpy(&tmp1, &i1, sizeof(int));
memcpy(&tmp2, &i2, sizeof(int));

打印它们:

printf("tmp1 = %.2f\n", tmp1);
printf("tmp2 = %.2f\n", tmp2);

Output:

tmp1 = 5.00
tmp2 = -2.50

完整示例:

#include <stdio.h>
#include <string.h>

int main(void)
{
    int i1 = 0x40a00000;
    int i2 = 0xc0200000;
    float tmp1, tmp2;
    memcpy(&tmp1, &i1, sizeof(int));
    memcpy(&tmp2, &i2, sizeof(int));
    printf("tmp1 = %.2f\n", tmp1);
    printf("tmp2 = %.2f\n", tmp2);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的浮点值无法正确打印? 的相关文章

随机推荐

  • 在 Os.Rename 中强制覆盖

    如果另一个文件已经存在 是否可以强制重命名 os rename 来覆盖另一个文件 例如 在下面的代码中 如果文件 Tests csv 已存在 它将被 Tests txt 文件替换 也已重命名为 Tests csv os rename C U
  • 如何将数组列表放入列表框中

    因此 我在一项作业上需要帮助 并且我已经尝试解决它一个多星期了 但我需要帮助将数组列表放入列表框中 That s what the GUI should look like in the end all the information ha
  • 从 Swing GUI 编译并运行 Java 代码

    我正在用 Java Swing 构建一个 GUI 并且必须从中执行 Java 代码 为了测试简单的代码 比如用 Java 打印 HelloWorld 就可以了 我看过论坛问题 我只知道我必须调用操作系统 我使用的是Windows7 来执行该
  • 初始化网格时,同一 DataGridView 列中的控件不呈现

    好坏 我在 DataGridView 列中托管不同的控件 当我在初始化网格的同时添加控件时 控件显示为文本框 不好 如果我在 DataGridView 初始化后添加控件 控件会正确呈现 好 public Form1 InitializeCo
  • jQuery 在 for 循环中动态增加变量名称

    是否可以将 i 添加到 for 循环内的 var 中 如果语法错误 它看起来像下面的代码 for i 1 i lt countProjects i var test i otherVar something Thanks 为此最好使用数组
  • 反射 - 获取 lambda 表达式内的方法调用列表

    我正在尝试找到一种方法来获取 C 3 5 中 lambda 表达式内的方法调用列表 例如 在下面的代码中 我想使用方法 LookAtThis Action a 来分析 lambda 表达式的内容 换句话说 我希望 LookAtThis 返回
  • 如何使用散景后端控制全息视图中的(活动)工具

    如何控制在某个环境中使用 激活哪些工具holoviews情节与bokeh后端 我见过这个答案 但仅此而已adds一个新的活跃工具 它不会阻止任何其他工具 例如平移 处于活动状态 对于一个具体的例子 假设我只想要悬停工具 我会尝试这样做 im
  • 项目的选择器不是另一个项目的后代

    给定下面的 HTML 您将如何选择所有不是 itemcontainer 后代的 name s 类似于 group header name not 源自 itemcontainer 我知道这可以通过 jQuery 或添加其他类很容易地完成 但
  • cv2.getOptimalNewCameraMatrix 在某些数据集上返回 [0,0,0,0] 的 ROI

    我正在使用 OpenCV 2 x 开发一个 Python 程序 下面是我的代码摘录 该代码在已捕获和保存的文件列表上运行 所有图像都是80 x 60 8 位灰度图像 我得到的最好的投资回报率是 1 6 73 49 对于一台相机 但我的另一台
  • 在Java中将base64字符串转换为图像

    我有一个通过 JSON 字符串发送给我的图像 我想在我的 Android 应用程序中将该字符串转换为图像 然后显示该图像 JSON 字符串如下所示 data image png base64 iVBORw0KGgoAAAANSUhEUgAA
  • WinAPI C++ 客户端在读取之前检测匿名管道上的写入

    我正在编写一个 C Windows 客户端控制台应用程序 该应用程序从 STDIN 上的匿名管道读取数据 我希望能够按如下方式使用我的程序 echo input text here my app exe 并在应用程序中使用通过管道输入的文本
  • 为什么我的 JLabel 没有显示

    我正在调用此方法 称为检查我的抽象类之一 但由于某种原因 我添加到 JPanel 面板 的 JLabel 问题 没有显示 为什么会出现这种情况 任何解释 我都使用重绘和验证方法 但仍然没有显示任何内容 您遇到的问题是您阻塞了事件调度线程 阻
  • 了解 Java 中的一个大公司项目 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 理解java大公司项目的最好方法是什么 关于这个主题 有一个不错的播客 采访 Dave Thomas 务实的程序员 Dave here 他称之为 软件考古学 由于许多不同的原因 组织经常失
  • 将强类型属性名称作为参数传递

    我有一个收藏IEnumerable
  • mvc4 中 Global.asax 中的会话超时重定向

    我试图检测会话何时结束 然后在我的全局 asax 文件中完成此操作后将用户重定向到主页 我正在使用我发现的下面的代码here 全局 asax protected void Session Start if Context Session n
  • Razor 页面中 foreach 循环内的表单

    我有一个标准的 Razor 页面 其中列出了我的数据库中的所有订单 它的编码非常标准 IList
  • 是否可以在 THREE.js 中启用无限数量的渲染器?

    为了避免 XY 问题 让我解释一下我来自哪里 我想使用 THREE js 使用同一时间轴绘制大量堆叠在一起的波形 波形只是三线 我通过修改正交相机的视图范围来实现这些波形的缩放 平移 缩放 我最初尝试完成此任务 导致我创建多个具有固定高度的
  • 在 Laravel 5.5 中使用 str_limit 函数限制文本

    我一直在尝试限制我的博客内容文本str limit在我对其应用字符限制之前 它工作得很好 请查看我的刀片文件的代码中缺少什么 str limit blog gt content 在默认限制下工作正常 在视图上显示有限的文本 但是当我应用任何
  • PrimeFaces:验证时的条件更新

    是否可以仅在验证成功时有条件地更新 JSF 组件 我希望能够做类似的事情
  • 为什么我的浮点值无法正确打印?

    我正在尝试打印浮点值 0x40a00000 和 0xc0200000 但是我打印出来的值和根据 IEEE 754 浮点转换器的正确值 https www h schmidt net FloatConverter IEEE754 html 完