什么是浮点错误-1#Ĵ是什么意思?
-
20-08-2019 - |
题
近日,有时(很少),当我们从我们的应用程序中导出数据,导出日志包含看起来像浮点值“-1。#J”。我一直无法重现它,所以我不知道浮动是什么样子的二进制,或者如何Visual Studio中显示出来。
我试图寻找对printf的源代码,但没有发现任何东西(不是100%肯定我看着正确的版本,虽然...)。
我试着用搜索引擎谷歌,但扔掉任何#,它似乎。我找不到浮动错误的任何名单。
解决方案
它可以是负无穷大或NaN(非数字)。由于对场的printf格式不区分它们。
我试图在Visual Studio 2008以下代码:
double a = 0.0;
printf("%.3g\n", 1.0 / a); // +inf
printf("%.3g\n", -1.0 / a); // -inf
printf("%.3g\n", a / a); // NaN
这导致如下输出:
1.#J
-1.#J
-1.#J
除去0.3格式指定符给出:
1.#INF
-1.#INF
-1.#IND
所以很清楚0/0给出的NaN和-1/0给出负无穷大(NaN时,-inf和+ INF是唯一的“错误”的浮点数,如果我记错)
不隶属于 StackOverflow