【发布时间】:2015-02-22 18:07:03
【问题描述】:
最近我测试了以下程序,我期待运行时错误,但它显示“nan”作为输出。为什么和如何?我正在使用 g++ 编译器。
#include <iostream>
int main()
{
float f=0.0f/0.0f;
std::cout<<f;
return 0;
}
同样,我也在 Java 和 C# 中尝试了类似类型的程序,它再次显示 "nan" 作为输出。
class Test
{
public static void main(String args[])
{
float f=0.0f/0.0f;
System.out.println(f);
}
}
class Test
{
public static void Main(string[] args)
{
float f=0.0f/0.0f;
Console.Write(f);
}
}
我想知道浮点运算是如何实现的以及它与整数运算有何不同。在 C++ 的情况下是未定义的行为吗?如果是,为什么? 请帮帮我。
【问题讨论】:
-
因为浮点规范是这么说的。 en.wikipedia.org/wiki/IEEE_floating_point
标签: java c# c++ floating-point nan