Search code examples
c#.netdecimalint

Best way to get whole number part of a Decimal number


What is the best way to return the whole number part of a decimal (in c#)? (This has to work for very large numbers that may not fit into an int).

GetIntPart(343564564.4342) >> 343564564
GetIntPart(-323489.32) >> -323489
GetIntPart(324) >> 324

The purpose of this is: I am inserting into a decimal (30,4) field in the db, and want to ensure that I do not try to insert a number than is too long for the field. Determining the length of the whole number part of the decimal is part of this operation.


Solution

  • By the way guys, (int)Decimal.MaxValue will overflow. You can't get the "int" part of a decimal because the decimal is too friggen big to put in the int box. Just checked... its even too big for a long (Int64).

    If you want the bit of a Decimal value to the LEFT of the dot, you need to do this:

    Math.Truncate(number)
    

    and return the value as... A DECIMAL or a DOUBLE.

    edit: Truncate is definitely the correct function!