無限大
日本語 | 無限大 |
英語 | inifinite number |
ふりがな | むげんだい |
フリガナ | ムゲンダイ |
大きすぎる、もしくは小さすぎる数。
計算上は存在するが実際には数値としては存在しない数。「∞」のこと。
プログラム上では、double型及びfloat型の特殊な数値である。
Mathクラス等による計算の結果、無限大が得らた場合に返される。
16進数表記では、double型は0x7FF0000000000000が正の無限大、0xFFF0000000000000が負の無限大となる。また、float型は0x7F800000が正の無限大、0xFF800000が負の無限大となる。
これらの値は、Doubleクラス及びFloatクラスのPOSITIVE_INFINITYフィールド及びNEGATIVE_INFINITYフィールドとして宣言されている。また、これらのクラスのisInfinite()メソッドを使用することで無限大であるか判別することができる。
計算上は存在するが実際には数値としては存在しない数。「∞」のこと。
プログラム上では、double型及びfloat型の特殊な数値である。
Mathクラス等による計算の結果、無限大が得らた場合に返される。
16進数表記では、double型は0x7FF0000000000000が正の無限大、0xFFF0000000000000が負の無限大となる。また、float型は0x7F800000が正の無限大、0xFF800000が負の無限大となる。
これらの値は、Doubleクラス及びFloatクラスのPOSITIVE_INFINITYフィールド及びNEGATIVE_INFINITYフィールドとして宣言されている。また、これらのクラスのisInfinite()メソッドを使用することで無限大であるか判別することができる。
参考サイト
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 「無限大」は、「正の無限大」と「負の無限大」があり、
// それぞれPOSITIVE_INFINITYフィールドとNEGATIVE_INFINITYフィールド
// がDoubleクラスにstatic finalフィールドとして宣言されています。
double dPositiveInfinity = Double.POSITIVE_INFINITY;
double dNegativeInfinity = Double.NEGATIVE_INFINITY;
// System.out.println()メソッドはこれを
// 「Infinity」「-Infinity」と出力します。
System.out.println( dPositiveInfinity );
System.out.println( dNegativeInfinity );
// Infinity
// -Infinity
// Floatクラスも同様です。
float fPositiveInfinity = Float.POSITIVE_INFINITY;
float fNegativeInfinity = Float.NEGATIVE_INFINITY;
System.out.println( fPositiveInfinity );
System.out.println( fNegativeInfinity );
// Infinity
// -Infinity
// 無限大かどうかはDoubleクラスとFloatクラスの
// isInfinite()メソッドを使用します。
System.out.println( Double.isInfinite( dPositiveInfinity ) );
System.out.println( Double.isInfinite( dNegativeInfinity ) );
// true
// true
// double型の場合、16進数表記で
// POSITIVE_INFINITYは0x7FF0000000000000、
// NEGATIVE_INFINITYは0xFFF0000000000000となります。
String hexPositiveInfinityString = Long.toHexString( Double.doubleToLongBits( Double.POSITIVE_INFINITY ) );
String hexNegativeInfinityString = Long.toHexString( Double.doubleToLongBits( Double.NEGATIVE_INFINITY ) );
System.out.println( hexPositiveInfinityString );
System.out.println( hexNegativeInfinityString );
// 7ff0000000000000
// fff0000000000000
// 2進数表記だと以下のようになります。
outputDoubleBit( Double.POSITIVE_INFINITY );
outputDoubleBit( Double.NEGATIVE_INFINITY );
// 0 11111111111 0000000000000000000000000000000000000000000000000000
// 1 11111111111 0000000000000000000000000000000000000000000000000000
// 正の無限大は、たとえばMathクラスのpow()メソッドに0と-1を
// 渡すと返されます。
double d;
d = Math.pow( 0, -1 );
System.out.println( d );
System.out.println( Double.isInfinite( d ) );
// Infinity
// true
// 負の無限大は、たとえばMathクラスのlog()メソッドに0を
// 渡すと返されます。
d = Math.log( 0 );
System.out.println( d );
System.out.println( Double.isInfinite( d ) );
// -Infinity
// true
}
/**
* double型変数をビット形式で出力します。
*/
private static void outputDoubleBit( double d )
{
// double型変数をビット形式で文字列化します。
String source = Long.toBinaryString( Double.doubleToLongBits( d ) );
// 左0埋めします。
StringBuffer strbuf = new StringBuffer();
for( int iF1 = source.length(); iF1 < 64; ++iF1 )
{
strbuf.append( "0" );
}
strbuf.append( source );
// 符号、仮数部、指数部の間にスペースを入れます。
strbuf.insert( 12, " " );
strbuf.insert( 1, " " );
System.out.println( strbuf.toString() );
}
}
public class Sample
{
public static void main( String[] args )
{
// 「無限大」は、「正の無限大」と「負の無限大」があり、
// それぞれPOSITIVE_INFINITYフィールドとNEGATIVE_INFINITYフィールド
// がDoubleクラスにstatic finalフィールドとして宣言されています。
double dPositiveInfinity = Double.POSITIVE_INFINITY;
double dNegativeInfinity = Double.NEGATIVE_INFINITY;
// System.out.println()メソッドはこれを
// 「Infinity」「-Infinity」と出力します。
System.out.println( dPositiveInfinity );
System.out.println( dNegativeInfinity );
// Infinity
// -Infinity
// Floatクラスも同様です。
float fPositiveInfinity = Float.POSITIVE_INFINITY;
float fNegativeInfinity = Float.NEGATIVE_INFINITY;
System.out.println( fPositiveInfinity );
System.out.println( fNegativeInfinity );
// Infinity
// -Infinity
// 無限大かどうかはDoubleクラスとFloatクラスの
// isInfinite()メソッドを使用します。
System.out.println( Double.isInfinite( dPositiveInfinity ) );
System.out.println( Double.isInfinite( dNegativeInfinity ) );
// true
// true
// double型の場合、16進数表記で
// POSITIVE_INFINITYは0x7FF0000000000000、
// NEGATIVE_INFINITYは0xFFF0000000000000となります。
String hexPositiveInfinityString = Long.toHexString( Double.doubleToLongBits( Double.POSITIVE_INFINITY ) );
String hexNegativeInfinityString = Long.toHexString( Double.doubleToLongBits( Double.NEGATIVE_INFINITY ) );
System.out.println( hexPositiveInfinityString );
System.out.println( hexNegativeInfinityString );
// 7ff0000000000000
// fff0000000000000
// 2進数表記だと以下のようになります。
outputDoubleBit( Double.POSITIVE_INFINITY );
outputDoubleBit( Double.NEGATIVE_INFINITY );
// 0 11111111111 0000000000000000000000000000000000000000000000000000
// 1 11111111111 0000000000000000000000000000000000000000000000000000
// 正の無限大は、たとえばMathクラスのpow()メソッドに0と-1を
// 渡すと返されます。
double d;
d = Math.pow( 0, -1 );
System.out.println( d );
System.out.println( Double.isInfinite( d ) );
// Infinity
// true
// 負の無限大は、たとえばMathクラスのlog()メソッドに0を
// 渡すと返されます。
d = Math.log( 0 );
System.out.println( d );
System.out.println( Double.isInfinite( d ) );
// -Infinity
// true
}
/**
* double型変数をビット形式で出力します。
*/
private static void outputDoubleBit( double d )
{
// double型変数をビット形式で文字列化します。
String source = Long.toBinaryString( Double.doubleToLongBits( d ) );
// 左0埋めします。
StringBuffer strbuf = new StringBuffer();
for( int iF1 = source.length(); iF1 < 64; ++iF1 )
{
strbuf.append( "0" );
}
strbuf.append( source );
// 符号、仮数部、指数部の間にスペースを入れます。
strbuf.insert( 12, " " );
strbuf.insert( 1, " " );
System.out.println( strbuf.toString() );
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 「無限大」は、「正の無限大」と「負の無限大」があり、 // それぞれPOSITIVE_INFINITYフィールドとNEGATIVE_INFINITYフィールド // がDoubleクラスにstatic finalフィールドとして宣言されています。 double dPositiveInfinity = Double.POSITIVE_INFINITY; double dNegativeInfinity = Double.NEGATIVE_INFINITY; // System.out.println()メソッドはこれを // 「Infinity」「-Infinity」と出力します。 System.out.println( dPositiveInfinity ); System.out.println( dNegativeInfinity ); // Infinity // -Infinity // Floatクラスも同様です。 float fPositiveInfinity = Float.POSITIVE_INFINITY; float fNegativeInfinity = Float.NEGATIVE_INFINITY; System.out.println( fPositiveInfinity ); System.out.println( fNegativeInfinity ); // Infinity // -Infinity // 無限大かどうかはDoubleクラスとFloatクラスの // isInfinite()メソッドを使用します。 System.out.println( Double.isInfinite( dPositiveInfinity ) ); System.out.println( Double.isInfinite( dNegativeInfinity ) ); // true // true // double型の場合、16進数表記で // POSITIVE_INFINITYは0x7FF0000000000000、 // NEGATIVE_INFINITYは0xFFF0000000000000となります。 String hexPositiveInfinityString = Long.toHexString( Double.doubleToLongBits( Double.POSITIVE_INFINITY ) ); String hexNegativeInfinityString = Long.toHexString( Double.doubleToLongBits( Double.NEGATIVE_INFINITY ) ); System.out.println( hexPositiveInfinityString ); System.out.println( hexNegativeInfinityString ); // 7ff0000000000000 // fff0000000000000 // 2進数表記だと以下のようになります。 outputDoubleBit( Double.POSITIVE_INFINITY ); outputDoubleBit( Double.NEGATIVE_INFINITY ); // 0 11111111111 0000000000000000000000000000000000000000000000000000 // 1 11111111111 0000000000000000000000000000000000000000000000000000 // 正の無限大は、たとえばMathクラスのpow()メソッドに0と-1を // 渡すと返されます。 double d; d = Math.pow( 0, -1 ); System.out.println( d ); System.out.println( Double.isInfinite( d ) ); // Infinity // true // 負の無限大は、たとえばMathクラスのlog()メソッドに0を // 渡すと返されます。 d = Math.log( 0 ); System.out.println( d ); System.out.println( Double.isInfinite( d ) ); // -Infinity // true } /** * double型変数をビット形式で出力します。 */ private static void outputDoubleBit( double d ) { // double型変数をビット形式で文字列化します。 String source = Long.toBinaryString( Double.doubleToLongBits( d ) ); // 左0埋めします。 StringBuffer strbuf = new StringBuffer(); for( int iF1 = source.length(); iF1 < 64; ++iF1 ) { strbuf.append( "0" ); } strbuf.append( source ); // 符号、仮数部、指数部の間にスペースを入れます。 strbuf.insert( 12, " " ); strbuf.insert( 1, " " ); System.out.println( strbuf.toString() ); } }