“1.$”的含义是什么?

5

我在Visual C++ 2010中使用cout打印一个变量,结果显示为"1.$"。这是什么意思?

由于Google不允许搜索带有"$"的内容,所以我无法找到其含义。

编辑:

代码如下:

double func(...);

std::cout << func(...);

我没有修改cout的默认设置


1
想要展示代码吗?否则我们可能会猜测您正在显示一个没有小数点和带有尾随货币代码的金额? - Bo Persson
由于它是一个双精度数,我猜测它是正无穷大。 - Martin York
func()里面是什么? - relaxxx
https://dev59.com/3nNA5IYBdhLWcg3wgeAd - beatgammit
2个回答

11

这是一个精度设置很小的无穷大值:

#include <iostream>
#include <limits>
int main()
{
    std::cout << std::numeric_limits<double>::infinity() << "\n";
    std::cout << std::numeric_limits<double>::quiet_NaN()() << "\n";

    std::cout << std::setprecision(2) << std::numeric_limits<double>::infinity() << "\n";
    std::cout << std::setprecision(2) << std::numeric_limits<double>::quiet_NaN() << "\n";
}

这应该打印出:

1.#INF
1.#QNAN
1.$
1.$

编辑:

根据下面评论区的@ZoogieZork(指出这是一个精度问题)。
这直接关系到这个问题:什么是浮点错误-1.#J?


@Kirll:并非所有系统都符合标准。这就是我提出问题的原因。 - Martin York
@Krill:你确定它不受地区或其他因素的影响吗?我问这个问题是因为我不确定自己是否在瞎猜。 - Martin York
5
我认为你已经掌握了要点——当将“1.#INF”四舍五入到小数点后一位时,它可能变成“1.$”,因为“$”比“#”高一个字符。这就像在这里,“1.#INF”最终变成了“1.#J”:https://dev59.com/0HRA5IYBdhLWcg3wwwvD。 - ZoogieZork
现在我想起来了,1.#QNAN 可能更有可能是它的真实含义。 - ZoogieZork
@ZoogieZork:你是正确的。它可能是任何非数字值。 - Martin York
显示剩余2条评论

-2

$在C++中没有特殊含义。

您正在打印一个包含$的字符串。


该函数返回一个双精度浮点数! - Martin York
之前的帖子中提到它返回美元符号的ASCII码(0x24)。如果是这样,该值将被转换为一个包含美元符号的字符串。 - Steve Wellens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接