いや,別にC++に限った話じゃないですが,無限大の浮動小数点の内部表現って一応国際規格として定まったものがあるんですな.以下は,C++でそれを取るやり方.
#include <iostream> #include <limits> int main() { using namespace std; double inf = numeric_limits<double>::infinity(); if(inf < 0.0) { cout << "inf < 0.0" << endl; }; if(inf < numeric_limits<double>::max()) { cout << "inf < max" << endl; } if(-inf > numeric_limits<double>::min()) { cout << "-inf > min" << endl; } if(-inf > 0.0) { cout << "-inf > 0.0" << endl; } if(inf != inf) { cout << "inf != inf" << endl; }; if(inf == -inf) { cout << "inf == -inf" << endl; } if(inf + 1.0 != inf) { cout << "inf + 1.0 != inf" << endl; } if(inf - 1.0 != inf) { cout << "inf - 1.0 != inf" << endl; } if(inf * 2.0 != inf) { cout << "inf * 2.0 != inf" << endl; } if(inf / 2.0 != inf) { cout << "inf / 2.0 != inf" << endl; } }
IEEE 754("IEEE Standard for Binary Floating-Point Arithmetic")とかIOS/IEC 10967-1("Information technology - Language independent arithmetic - Part 1: Integer and floating point arithmetic", LIA-1)とか買っておこうかな・・・.C++の規格読む限りでは無限大の浮動少数表現を規定している国際規格はLIA-1だそうな.
http://webstore.ansi.org/ansidocstore/product.asp?sku=754%2D1985
http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+10967%2D1%3A1994
って高いよっ!!ヽ(`Д´)ノ ウワァァン!!