Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5960391
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T18:49:14+00:00 2026-05-22T18:49:14+00:00

I have a situation that I cannot change: one database table (table A) accepts

  • 0

I have a situation that I cannot change: one database table (table A) accepts 6 decimal places, while a related column in a different table (table B) only has 3 decimal places.

I need to copy from A to B, but if A has more than 3 decimal places the extra data will be lost. I cant change the table definition but I can add a workaround. So I’m trying to find out how to check if a decimal has more than 3 decimal places or not?

eg

Table A
Id, Qty,  Unit(=6dp)
1,  1,     0.00025
2,  4000,  0.00025

Table B
Id, TotalQty(=3dp)

I want to be able to find out if Qty * Unit from Table A has more than 3 decimals (row 1 would fail, row 2 would pass):

if (CountDecimalPlaces(tableA.Qty * tableA.Unit) > 3)
{
    return false;
}
tableB.TotalQty = tableA.Qty * tableA.Unit;

How would I implement the CountDecimalPlaces(decimal value) {} function?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T18:49:14+00:00Added an answer on May 22, 2026 at 6:49 pm

    This works for 3 decimal places, and it can be adapted for a generic solution:

    static bool LessThan3DecimalPlaces(decimal dec)
    {
        decimal value = dec * 1000;
        return value == Math.Floor(value);
    }
    static void Test()
    {
        Console.WriteLine(LessThan3DecimalPlaces(1m * 0.00025m));
        Console.WriteLine(LessThan3DecimalPlaces(4000m * 0.00025m));
    }
    

    For a real generic solution, you’ll need to “deconstruct” the decimal value in its parts – take a look at Decimal.GetBits for more information.

    Update: this is a simple implementation of a generic solution which works for all decimals whose integer part is less than long.MaxValue (you’d need something like a “big integer” for a trully generic function).

    static decimal CountDecimalPlaces(decimal dec)
    {
        Console.Write("{0}: ", dec);
        int[] bits = Decimal.GetBits(dec);
        ulong lowInt = (uint)bits[0];
        ulong midInt = (uint)bits[1];
        int exponent = (bits[3] & 0x00FF0000) >> 16;
        int result = exponent;
        ulong lowDecimal = lowInt | (midInt << 32);
        while (result > 0 && (lowDecimal % 10) == 0)
        {
            result--;
            lowDecimal /= 10;
        }
    
        return result;
    }
    
    static void Foo()
    {
        Console.WriteLine(CountDecimalPlaces(1.6m));
        Console.WriteLine(CountDecimalPlaces(1.600m));
        Console.WriteLine(CountDecimalPlaces(decimal.MaxValue));
        Console.WriteLine(CountDecimalPlaces(1m * 0.00025m));
        Console.WriteLine(CountDecimalPlaces(4000m * 0.00025m));
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

The situation: I have a pieceofcrapuous laptop. One of the things that make it
I have a situation that has been partially covered by other answers at SO,
Currently in our enterprise we have a situation that i think it's not very
I've been working on optimizing a query and have ran into a situation that's
I have a situation where I have two entities that share a primary key
I have a situation where I'm starting a number of objects that, when they
Situation: I have a simple XML document that contains image information. I need to
I have the following situation: There is a tool that gets an XSLT from
I have the following situation: I have a certain function that runs a loop
Here is my situation: I have an application that use a configuration file. The

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.