Math.Max Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before itâ€™s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns the larger of two specified numbers.
Overloads
Max(UInt64, UInt64) 
Returns the larger of two 64bit unsigned integers. 
Max(UInt32, UInt32) 
Returns the larger of two 32bit unsigned integers. 
Max(UInt16, UInt16) 
Returns the larger of two 16bit unsigned integers. 
Max(Single, Single) 
Returns the larger of two singleprecision floatingpoint numbers. 
Max(SByte, SByte) 
Returns the larger of two 8bit signed integers. 
Max(IntPtr, IntPtr) 
Returns the larger of two native signed integers. 
Max(UIntPtr, UIntPtr) 
Returns the larger of two native unsigned integers. 
Max(Int32, Int32) 
Returns the larger of two 32bit signed integers. 
Max(Int16, Int16) 
Returns the larger of two 16bit signed integers. 
Max(Double, Double) 
Returns the larger of two doubleprecision floatingpoint numbers. 
Max(Decimal, Decimal) 
Returns the larger of two decimal numbers. 
Max(Byte, Byte) 
Returns the larger of two 8bit unsigned integers. 
Max(Int64, Int64) 
Returns the larger of two 64bit signed integers. 
Examples
The following example demonstrates how to use the Max method to return and display the greater of two variables:
// This example demonstrates Math.Max()
using namespace System;
int main()
{
String^ str = "{0}: The greater of {1,3} and {2,3} is {3}.";
String^ nl = Environment::NewLine;
Byte xByte1 = 1,xByte2 = 51;
short xShort1 = 2,xShort2 = 52;
int xInt1 = 3,xInt2 = 53;
long xLong1 = 4,xLong2 = 54;
float xSingle1 = 5.0f,xSingle2 = 55.0f;
double xDouble1 = 6.0,xDouble2 = 56.0;
Decimal xDecimal1 = 7,xDecimal2 = 57;
// The following types are not CLScompliant.
SByte xSbyte1 = 101,xSbyte2 = 111;
UInt16 xUshort1 = 102,xUshort2 = 112;
UInt32 xUint1 = 103,xUint2 = 113;
UInt64 xUlong1 = 104,xUlong2 = 114;
Console::WriteLine( "{0}Display the greater of two values:{0}", nl );
Console::WriteLine( str, "Byte ", xByte1, xByte2, Math::Max( xByte1, xByte2 ) );
Console::WriteLine( str, "Int16 ", xShort1, xShort2, Math::Max( xShort1, xShort2 ) );
Console::WriteLine( str, "Int32 ", xInt1, xInt2, Math::Max( xInt1, xInt2 ) );
Console::WriteLine( str, "Int64 ", xLong1, xLong2, Math::Max( xLong1, xLong2 ) );
Console::WriteLine( str, "Single ", xSingle1, xSingle2, Math::Max( xSingle1, xSingle2 ) );
Console::WriteLine( str, "Double ", xDouble1, xDouble2, Math::Max( xDouble1, xDouble2 ) );
Console::WriteLine( str, "Decimal", xDecimal1, xDecimal2, Math::Max( xDecimal1, xDecimal2 ) );
//
Console::WriteLine( "{0}The following types are not CLScompliant.{0}", nl );
Console::WriteLine( str, "SByte ", xSbyte1, xSbyte2, Math::Max( xSbyte1, xSbyte2 ) );
Console::WriteLine( str, "UInt16 ", xUshort1, xUshort2, Math::Max( xUshort1, xUshort2 ) );
Console::WriteLine( str, "UInt32 ", xUint1, xUint2, Math::Max( xUint1, xUint2 ) );
Console::WriteLine( str, "UInt64 ", xUlong1, xUlong2, Math::Max( xUlong1, xUlong2 ) );
}
/*
This example produces the following results:
Display the greater of two values:
Byte : The greater of 1 and 51 is 51.
Int16 : The greater of 2 and 52 is 52.
Int32 : The greater of 3 and 53 is 53.
Int64 : The greater of 4 and 54 is 54.
Single : The greater of 5 and 55 is 55.
Double : The greater of 6 and 56 is 56.
Decimal: The greater of 7 and 57 is 57.
(The following types are not CLScompliant.)
SByte : The greater of 101 and 111 is 111.
UInt16 : The greater of 102 and 112 is 112.
UInt32 : The greater of 103 and 113 is 113.
UInt64 : The greater of 104 and 114 is 114.
*/
string str = "{0}: The greater of {1,3} and {2,3} is {3}.";
byte xByte1 = 1, xByte2 = 51;
short xShort1 = 2, xShort2 = 52;
int xInt1 = 3, xInt2 = 53;
long xLong1 = 4, xLong2 = 54;
float xSingle1 = 5.0f, xSingle2 = 55.0f;
double xDouble1 = 6.0, xDouble2 = 56.0;
Decimal xDecimal1 = 7m, xDecimal2 = 57m;
// The following types are not CLScompliant.
sbyte xSbyte1 = 101, xSbyte2 = 111;
ushort xUshort1 = 102, xUshort2 = 112;
uint xUint1 = 103, xUint2 = 113;
ulong xUlong1 = 104, xUlong2 = 114;
Console.WriteLine("Display the greater of two values:\n");
Console.WriteLine(str, "Byte ", xByte1, xByte2, Math.Max(xByte1, xByte2));
Console.WriteLine(str, "Int16 ", xShort1, xShort2, Math.Max(xShort1, xShort2));
Console.WriteLine(str, "Int32 ", xInt1, xInt2, Math.Max(xInt1, xInt2));
Console.WriteLine(str, "Int64 ", xLong1, xLong2, Math.Max(xLong1, xLong2));
Console.WriteLine(str, "Single ", xSingle1, xSingle2, Math.Max(xSingle1, xSingle2));
Console.WriteLine(str, "Double ", xDouble1, xDouble2, Math.Max(xDouble1, xDouble2));
Console.WriteLine(str, "Decimal", xDecimal1, xDecimal2, Math.Max(xDecimal1, xDecimal2));
Console.WriteLine("\nThe following types are not CLScompliant.\n");
Console.WriteLine(str, "SByte ", xSbyte1, xSbyte2, Math.Max(xSbyte1, xSbyte2));
Console.WriteLine(str, "UInt16 ", xUshort1, xUshort2, Math.Max(xUshort1, xUshort2));
Console.WriteLine(str, "UInt32 ", xUint1, xUint2, Math.Max(xUint1, xUint2));
Console.WriteLine(str, "UInt64 ", xUlong1, xUlong2, Math.Max(xUlong1, xUlong2));
/*
This example produces the following results:
Display the greater of two values:
Byte : The greater of 1 and 51 is 51.
Int16 : The greater of 2 and 52 is 52.
Int32 : The greater of 3 and 53 is 53.
Int64 : The greater of 4 and 54 is 54.
Single : The greater of 5 and 55 is 55.
Double : The greater of 6 and 56 is 56.
Decimal: The greater of 7 and 57 is 57.
(The following types are not CLScompliant.)
SByte : The greater of 101 and 111 is 111.
UInt16 : The greater of 102 and 112 is 112.
UInt32 : The greater of 103 and 113 is 113.
UInt64 : The greater of 104 and 114 is 114.
*/
open System
let print typ a b m =
printfn $"{typ}: The greater of {a,3} and {b,3} is {m}."
let xByte1, xByte2 = 1uy, 51uy
let xShort1, xShort2 = 2s, 52s
let xInt1, xInt2 = 3, 53
let xLong1, xLong2 = 4L, 54L
let xSingle1, xSingle2 = 5f, 55f
let xDouble1, xDouble2 = 6., 56.
let xDecimal1, xDecimal2 = 7m, 57m
// The following types are not CLScompliant.
let xSbyte1, xSbyte2 = 101y, 111y
let xUshort1, xUshort2 = 102us, 112us
let xUint1, xUint2 = 103u, 113u
let xUlong1, xUlong2 = 104uL, 114uL
printfn "Display the greater of two values:\n"
print "Byte " xByte1 xByte2 (Math.Max(xByte1, xByte2))
print "Int16 " xShort1 xShort2 (Math.Max(xShort1, xShort2))
print "Int32 " xInt1 xInt2 (Math.Max(xInt1, xInt2))
print "Int64 " xLong1 xLong2 (Math.Max(xLong1, xLong2))
print "Single " xSingle1 xSingle2 (Math.Max(xSingle1, xSingle2))
print "Double " xDouble1 xDouble2 (Math.Max(xDouble1, xDouble2))
print "Decimal" xDecimal1 xDecimal2 (Math.Max(xDecimal1, xDecimal2))
printfn "\nThe following types are not CLScompliant.\n"
print "SByte " xSbyte1 xSbyte2 (Math.Max(xSbyte1, xSbyte2))
print "UInt16 " xUshort1 xUshort2 (Math.Max(xUshort1, xUshort2))
print "UInt32 " xUint1 xUint2 (Math.Max(xUint1, xUint2))
print "UInt64 " xUlong1 xUlong2 (Math.Max(xUlong1, xUlong2))
// This example produces the following results:
// Display the greater of two values:
//
// Byte : The greater of 1 and 51 is 51.
// Int16 : The greater of 2 and 52 is 52.
// Int32 : The greater of 3 and 53 is 53.
// Int64 : The greater of 4 and 54 is 54.
// Single : The greater of 5 and 55 is 55.
// Double : The greater of 6 and 56 is 56.
// Decimal: The greater of 7 and 57 is 57.
//
// (The following types are not CLScompliant.)
//
// SByte : The greater of 101 and 111 is 111.
// UInt16 : The greater of 102 and 112 is 112.
// UInt32 : The greater of 103 and 113 is 113.
// UInt64 : The greater of 104 and 114 is 114.
' This example demonstrates Math.Max()
Class Sample
Public Shared Sub Main()
Dim str As String = "{0}: The greater of {1,3} and {2,3} is {3}."
Dim nl As String = Environment.NewLine
Dim xByte1 As Byte = 1
Dim xByte2 As Byte = 51
Dim xShort1 As Short =  2
Dim xShort2 As Short = 52
Dim xInt1 As Integer =  3
Dim xInt2 As Integer = 53
Dim xLong1 As Long =  4
Dim xLong2 As Long = 54
Dim xSingle1 As Single = 5F
Dim xSingle2 As Single = 55F
Dim xDouble1 As Double = 6.0
Dim xDouble2 As Double = 56.0
Dim xDecimal1 As [Decimal] = 7D
Dim xDecimal2 As [Decimal] = 57D
' The following types are not CLScompliant.
Dim xSByte1 As SByte = 101
Dim xSByte2 As SByte = 111
Dim xUShort1 As UShort = 102
Dim xUShort2 As UShort = 112
Dim xUint1 As UInteger = 103
Dim xUint2 As UInteger = 113
Dim xUlong1 As ULong = 104
Dim xUlong2 As ULong = 114
Console.WriteLine("{0}Display the greater of two values:{0}", nl)
Console.WriteLine(str, "Byte ", xByte1, xByte2, Math.Max(xByte1, xByte2))
Console.WriteLine(str, "Int16 ", xShort1, xShort2, Math.Max(xShort1, xShort2))
Console.WriteLine(str, "Int32 ", xInt1, xInt2, Math.Max(xInt1, xInt2))
Console.WriteLine(str, "Int64 ", xLong1, xLong2, Math.Max(xLong1, xLong2))
Console.WriteLine(str, "Single ", xSingle1, xSingle2, Math.Max(xSingle1, xSingle2))
Console.WriteLine(str, "Double ", xDouble1, xDouble2, Math.Max(xDouble1, xDouble2))
Console.WriteLine(str, "Decimal", xDecimal1, xDecimal2, Math.Max(xDecimal1, xDecimal2))
'
Console.WriteLine("{0}(The following types are not CLScompliant.){0}", nl)
Console.WriteLine(str, "SByte ", xSByte1, xSByte2, Math.Max(xSByte1, xSByte2))
Console.WriteLine(str, "UInt16 ", xUShort1, xUShort2, Math.Max(xUShort1, xUShort2))
Console.WriteLine(str, "UInt32 ", xUint1, xUint2, Math.Max(xUint1, xUint2))
Console.WriteLine(str, "UInt64 ", xUlong1, xUlong2, Math.Max(xUlong1, xUlong2))
End Sub
End Class
'
'This example produces the following results:
'
'Display the greater of two values:
'
'Byte : The greater of 1 and 51 is 51.
'Int16 : The greater of 2 and 52 is 52.
'Int32 : The greater of 3 and 53 is 53.
'Int64 : The greater of 4 and 54 is 54.
'Single : The greater of 5 and 55 is 55.
'Double : The greater of 6 and 56 is 56.
'Decimal: The greater of 7 and 57 is 57.
'
' (The following types are not CLScompliant.)
'
' SByte : The greater of 101 and 111 is 111.
' UInt16 : The greater of 102 and 112 is 112.
' UInt32 : The greater of 103 and 113 is 113.
' UInt64 : The greater of 104 and 114 is 114.
Max(UInt64, UInt64)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Important
This API is not CLScompliant.
Returns the larger of two 64bit unsigned integers.
public:
static System::UInt64 Max(System::UInt64 val1, System::UInt64 val2);
[System.CLSCompliant(false)]
public static ulong Max (ulong val1, ulong val2);
[<System.CLSCompliant(false)>]
static member Max : uint64 * uint64 > uint64
Public Shared Function Max (val1 As ULong, val2 As ULong) As ULong
Parameters
 val1
 UInt64
The first of two 64bit unsigned integers to compare.
 val2
 UInt64
The second of two 64bit unsigned integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
 Attributes
Applies to
Max(UInt32, UInt32)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Important
This API is not CLScompliant.
Returns the larger of two 32bit unsigned integers.
public:
static System::UInt32 Max(System::UInt32 val1, System::UInt32 val2);
[System.CLSCompliant(false)]
public static uint Max (uint val1, uint val2);
[<System.CLSCompliant(false)>]
static member Max : uint32 * uint32 > uint32
Public Shared Function Max (val1 As UInteger, val2 As UInteger) As UInteger
Parameters
 val1
 UInt32
The first of two 32bit unsigned integers to compare.
 val2
 UInt32
The second of two 32bit unsigned integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
 Attributes
Applies to
Max(UInt16, UInt16)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Important
This API is not CLScompliant.
Returns the larger of two 16bit unsigned integers.
public:
static System::UInt16 Max(System::UInt16 val1, System::UInt16 val2);
[System.CLSCompliant(false)]
public static ushort Max (ushort val1, ushort val2);
[<System.CLSCompliant(false)>]
static member Max : uint16 * uint16 > uint16
Public Shared Function Max (val1 As UShort, val2 As UShort) As UShort
Parameters
 val1
 UInt16
The first of two 16bit unsigned integers to compare.
 val2
 UInt16
The second of two 16bit unsigned integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
 Attributes
Applies to
Max(Single, Single)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two singleprecision floatingpoint numbers.
public:
static float Max(float val1, float val2);
public static float Max (float val1, float val2);
static member Max : single * single > single
Public Shared Function Max (val1 As Single, val2 As Single) As Single
Parameters
 val1
 Single
The first of two singleprecision floatingpoint numbers to compare.
 val2
 Single
The second of two singleprecision floatingpoint numbers to compare.
Returns
Parameter val1
or val2
, whichever is larger. If val1
, or val2
, or both val1
and val2
are equal to NaN, NaN is returned.
Applies to
Max(SByte, SByte)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Important
This API is not CLScompliant.
Returns the larger of two 8bit signed integers.
public:
static System::SByte Max(System::SByte val1, System::SByte val2);
[System.CLSCompliant(false)]
public static sbyte Max (sbyte val1, sbyte val2);
[<System.CLSCompliant(false)>]
static member Max : sbyte * sbyte > sbyte
Public Shared Function Max (val1 As SByte, val2 As SByte) As SByte
Parameters
 val1
 SByte
The first of two 8bit signed integers to compare.
 val2
 SByte
The second of two 8bit signed integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
 Attributes
Applies to
Max(IntPtr, IntPtr)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two native signed integers.
public:
static IntPtr Max(IntPtr val1, IntPtr val2);
public static nint Max (nint val1, nint val2);
public static IntPtr Max (IntPtr val1, IntPtr val2);
static member Max : nativeint * nativeint > nativeint
Public Shared Function Max (val1 As IntPtr, val2 As IntPtr) As IntPtr
Parameters
 val1

IntPtr
nint
nativeint
The first of two native signed integers to compare.
 val2

IntPtr
nint
nativeint
The second of two native signed integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
Applies to
Max(UIntPtr, UIntPtr)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Important
This API is not CLScompliant.
Returns the larger of two native unsigned integers.
public:
static UIntPtr Max(UIntPtr val1, UIntPtr val2);
[System.CLSCompliant(false)]
public static nuint Max (nuint val1, nuint val2);
[System.CLSCompliant(false)]
public static UIntPtr Max (UIntPtr val1, UIntPtr val2);
[<System.CLSCompliant(false)>]
static member Max : unativeint * unativeint > unativeint
Public Shared Function Max (val1 As UIntPtr, val2 As UIntPtr) As UIntPtr
Parameters
 val1

UIntPtr
nuint
unativeint
The first of two native unsigned integers to compare.
 val2

UIntPtr
nuint
unativeint
The second of two native unsigned integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
 Attributes
Applies to
Max(Int32, Int32)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two 32bit signed integers.
public:
static int Max(int val1, int val2);
public static int Max (int val1, int val2);
static member Max : int * int > int
Public Shared Function Max (val1 As Integer, val2 As Integer) As Integer
Parameters
 val1
 Int32
The first of two 32bit signed integers to compare.
 val2
 Int32
The second of two 32bit signed integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
Applies to
Max(Int16, Int16)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two 16bit signed integers.
public:
static short Max(short val1, short val2);
public static short Max (short val1, short val2);
static member Max : int16 * int16 > int16
Public Shared Function Max (val1 As Short, val2 As Short) As Short
Parameters
 val1
 Int16
The first of two 16bit signed integers to compare.
 val2
 Int16
The second of two 16bit signed integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
Applies to
Max(Double, Double)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two doubleprecision floatingpoint numbers.
public:
static double Max(double val1, double val2);
public static double Max (double val1, double val2);
static member Max : double * double > double
Public Shared Function Max (val1 As Double, val2 As Double) As Double
Parameters
 val1
 Double
The first of two doubleprecision floatingpoint numbers to compare.
 val2
 Double
The second of two doubleprecision floatingpoint numbers to compare.
Returns
Parameter val1
or val2
, whichever is larger. If val1
, val2
, or both val1
and val2
are equal to NaN, NaN is returned.
Applies to
Max(Decimal, Decimal)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two decimal numbers.
public:
static System::Decimal Max(System::Decimal val1, System::Decimal val2);
public static decimal Max (decimal val1, decimal val2);
static member Max : decimal * decimal > decimal
Public Shared Function Max (val1 As Decimal, val2 As Decimal) As Decimal
Parameters
 val1
 Decimal
The first of two decimal numbers to compare.
 val2
 Decimal
The second of two decimal numbers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
Applies to
Max(Byte, Byte)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two 8bit unsigned integers.
public:
static System::Byte Max(System::Byte val1, System::Byte val2);
public static byte Max (byte val1, byte val2);
static member Max : byte * byte > byte
Public Shared Function Max (val1 As Byte, val2 As Byte) As Byte
Parameters
 val1
 Byte
The first of two 8bit unsigned integers to compare.
 val2
 Byte
The second of two 8bit unsigned integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
Applies to
Max(Int64, Int64)
 Source:
 Math.cs
 Source:
 Math.cs
 Source:
 Math.cs
Returns the larger of two 64bit signed integers.
public:
static long Max(long val1, long val2);
public static long Max (long val1, long val2);
static member Max : int64 * int64 > int64
Public Shared Function Max (val1 As Long, val2 As Long) As Long
Parameters
 val1
 Int64
The first of two 64bit signed integers to compare.
 val2
 Int64
The second of two 64bit signed integers to compare.
Returns
Parameter val1
or val2
, whichever is larger.
Applies to
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for