I need a method to return the firsts non zero numbers from a double in the following way:
double NumberA = 123.2; // Returns 123.2 (returns the same as it does not start with 0)
double NumberB = 1.2; // Returns 1.2 (returns the same as it does not start with 0)
double NumberC = 0.000034; // Returns 3.4
double NumberD = 0.3; // Returns 3.0
double NumberE = -0.00000087; // Returns -8.7
CodePudding user response:
One option would be to iteratively multiply by 10 until you get a number greater than 1:
public double RemoveLeadingZeros(double num)
{
if (num == 0) return 0;
while(Math.Abs(num) < 1) { num *= 10};
return num;
}
Note that double arithmetic is not always precise; you may end up with something like 3.40000000001 or 3.3999999999. If you want absolute precision then you can use decimal instead, or string manipulation.
CodePudding user response:
I would start with converting to a string. Something like this:
string doubleString = NumberC.ToString();
I don't know exactly what this will output, you will have to check. But if for example it is "0.000034" you can easily manipulate the string to meet your needs.
