BigInteger.Abs(BigInteger) メソッド


BigInteger オブジェクトの絶対値を取得します。Gets the absolute value of a BigInteger object.

 static System::Numerics::BigInteger Abs(System::Numerics::BigInteger value);
public static System.Numerics.BigInteger Abs (System.Numerics.BigInteger value);
static member Abs : System.Numerics.BigInteger -> System.Numerics.BigInteger
Public Shared Function Abs (value As BigInteger) As BigInteger



数値。A number.



value の絶対値。The absolute value of value.

次の例では、メソッドを使用し Abs BigInteger て、2の補数表現の値を、ファイルにシリアル化する前に、符号と大きさの表現に変換します。The following example uses the Abs method to convert a BigInteger value from two's complement representation to sign-and-magnitude representation before serializing it to a file. その後、ファイル内のデータは逆シリアル化され、新しいオブジェクトに割り当てられ BigInteger ます。Data in the file is then deserialized and assigned to a new BigInteger object.

using System;
using System.IO;
using System.Numerics;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable] public struct SignAndMagnitude
   public int Sign;
   public byte[] Bytes;

public class Example
   public static void Main()
      FileStream fs;
      BinaryFormatter formatter = new BinaryFormatter();

      BigInteger number = BigInteger.Pow(Int32.MaxValue, 20) * BigInteger.MinusOne;
      Console.WriteLine("The original value is {0}.", number);
      SignAndMagnitude sm = new SignAndMagnitude();
      sm.Sign = number.Sign;
      sm.Bytes = BigInteger.Abs(number).ToByteArray();

      // Serialize SignAndMagnitude value.
      fs = new FileStream(@".\data.bin", FileMode.Create);
      formatter.Serialize(fs, sm);

      // Deserialize SignAndMagnitude value.
      fs = new FileStream(@".\data.bin", FileMode.Open);
      SignAndMagnitude smRestored = (SignAndMagnitude) formatter.Deserialize(fs);
      BigInteger restoredNumber = new BigInteger(smRestored.Bytes);
      restoredNumber *= sm.Sign;
      Console.WriteLine("The deserialized value is {0}.", restoredNumber);
// The example displays the following output:
//    The original value is -4.3510823966323432743748744058E+186.
//    The deserialized value is -4.3510823966323432743748744058E+186.
Imports System.IO
Imports System.Numerics
Imports System.Runtime.Serialization.Formatters.Binary

<Serializable> Public Structure SignAndMagnitude
   Dim Sign As Integer
   Dim Bytes() As Byte
End Structure

Module Example
   Public Sub Main()
      Dim fs As FileStream
      Dim formatter As New BinaryFormatter()

      Dim number As BigInteger = BigInteger.Pow(Int32.MaxValue, 20) * BigInteger.MinusOne
      Console.WriteLine("The original value is {0}.", number)
      Dim sm As New SignAndMagnitude()
      sm.Sign = number.Sign
      sm.Bytes = BigInteger.Abs(number).ToByteArray()
      ' Serialize SignAndMagnitude value.
      fs = New FileStream(".\data.bin", FileMode.Create)
      formatter.Serialize(fs, sm)
      ' Deserialize SignAndMagnitude value.
      fs = New FileStream(".\data.bin", FileMode.Open)
      Dim smRestored As SignAndMagnitude = DirectCast(formatter.Deserialize(fs), SignAndMagnitude)
      Dim restoredNumber As New BigInteger(smRestored.Bytes) 
      restoredNumber *= sm.Sign 
      Console.WriteLine("The deserialized value is {0}.", restoredNumber)      
   End Sub
End Module
' The example displays the following output:
'    The original value is -4.3510823966323432743748744058E+186.
'    The deserialized value is -4.3510823966323432743748744058E+186.


数値の絶対値は、次の表に示すように、符号なしの数値になります。The absolute value of a number is that number without its sign, as shown in the following table.

value パラメーターvalue parameter 戻り値Return value
value >= 0value >= 0 value
value < 0value < 0 value * -1value * -1

メソッドは、 Abs Math.Abs プリミティブな数値型のメソッドに相当します。The Abs method is equivalent to the Math.Abs method for the primitive numeric types.