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的答案!
从您在问题中提供的链接(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)