简单的六角/浮动转换

use*_*494 2 c++ python floating-point formatting hex

我正在c ++和python程序之间做一些输入/输出(只有浮点值)python有一个很好的功能,可以将浮点值转换为十六进制数,然后返回,如下所示:

http://docs.python.org/library/stdtypes.html#additional-methods-on-float

在C++中有一种简单的方法可以达到类似的效果吗?并将python输出转换回C++ double/float?这样我在两个进程之间交换数据时就不会出现舍入错误的问题了......

thx的答案!

jfs*_*jfs 5

从您在问题中提供的链接(Float上的其他方法):

此语法类似于C99标准的6.4.4.2节中指定的语法,也类似于Java 1.5及更高版本中使用的语法.特别是,float.hex()的输出可用作C或Java代码中的十六进制浮点字面值,由C的%a格式字符或Java的Double.toHexString生成的十六进制字符串由float.fromhex()接受.

例:

#include <cstdio>

int main() {
  float f = 42.79;
  printf("%.2f == %a\n", f, f);  
  fscanf(stdin, "%a", &f);
  printf("%.2f == %a\n", f, f);  
}
Run Code Online (Sandbox Code Playgroud)

运行:

$ g++ *.cpp && (python -c'print 12.34.hex()' | ./a.out )
Run Code Online (Sandbox Code Playgroud)

输出:

42.79 == 0x1.5651ecp+5
12.34 == 0x1.8ae148p+3
Run Code Online (Sandbox Code Playgroud)