我目前发现没有一个 AI 能正确按照单精度转换 16 进制数 47 B8 05 01

67 天前
 kmephisto

我的 prompt 是“按 IEEE single-precision 转换 47 B8 05 01”,

deepseek 算出来是 94287.5 ,

claude-3-7-sonnet-20250219 算出来是 94267.8 ,

ChatGPT 官网免费版算的 123871.0 ,

gpt-4o-mini 算的 11264.0

正确答案是 94218.0078125 ,只有这个转换网站是对的 https://www.h-schmidt.net/FloatConverter/IEEE754.html

Decimal Representation:	        94218.01
Value actually stored in float:	94218.0078125
Error due to conversion:	        0.0021875
Binary Representation	                01000111101110000000010100000001
Hexadecimal Representation        47b80501
1629 次点击
所在节点    问与答
13 条回复
icyalala
67 天前
浮点数二进制转为十进制(最短表示且 round to event )是非常复杂的算法: https://github.com/jk-jeon/dragonbox
不调函数别说 AI 了,让真人手算也算不出来
icyalala
67 天前
@icyalala typo: round to even
ZRS
67 天前
你让它写代码做转换试试
Perry
67 天前
这种比较 deterministic 的问题就别想着只依赖 AI 做,你可以换个思路,让他写一个 python script 跑一下算出来
wssjy1234
67 天前
o3mini 算的是对的,不过要提醒算精确值
joyyu
67 天前
deepseek-R1 深度思考是对的。。本来还想说这种运算要大模型来最好也是调 Tool 来得到结果,结果发现推理模型还是挺强啊
lianyue
67 天前
msg7086
67 天前
帮你跑了 Gemini 2.5 Pro Exp ,也可以算出正确答案:

(前略)
最终结果: 将整数部分和小数部分相加:94218 + 0.0078125 = 94218.0078125
所以,十六进制 47 B8 05 01 按照 IEEE 754 单精度标准表示的十进制浮点数是 94218.0078125 。

不过 Gemini 2.0 Flash 算不对,尾数数 0 的时候数错个数了。
这方面思考模型应该更强一些,更容易自己纠正自己做错的部分。
passive
67 天前
IEEE745 好像是不规定 endian 的
Legman
66 天前
@msg7086 一样,grok3 也不对
xiangyuecn
66 天前
小端:2.456045448813471e-38 == new Float32Array(new Uint8Array([0x47,0xB8,0x05,0x01]).buffer)[0]
大端:94218.0078125 == new Float32Array(new Uint8Array([0x47,0xB8,0x05,0x01].reverse()).buffer)[0]

试了一下 deepseek ,结果确实是胡说八道
horizon
66 天前
你就好比让人口算,但不许用计算器。
然后呢?
min
66 天前
按 IEEE 745 single-precision 转换 47 B8 05 01 到 10 进制,注意小数部分的精度准确。

o3-mini-high
gemini-2.5-pro

可以做对

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1126014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX