Q:

How to comparing two x significant doubles correctly

This is not a duplicate question. There is an answer posted in the question. Hope it can help.
There are two doubles with the same value with decimals.
(Sorry, this is not a good case. because it will return false sometimes, but I can't find the case. If you try this case, it may not have any problem. So don't waste time to test it.)
double a = 0.70448;
double b = 0.70441;

I want to compare them with only 4 decimals.
I have this helper function to round them down to 4 decimals first.
public static double RoundDown(this double value, int decimals)
{
    var multiplier = Math.Pow(10, decimals);
    return Math.Floor(value * multiplier) / multiplier;
}

And then I want to check if a is larger than b like this:
RoundDown(a, 4) > RoundDown(b, 4)
Sometimes, for some cases, it will return true even they look equal. I understand very well this is floating issue, so I would like to know if there any elegant solution to compare them.
Updates:
I have tried to multiply it and compare them in integer. However, for this solution, I need to handle double infinity and NAN.
    private static CompareResult Compare(double a, double b, double decimals = 0)
    {
        var multiplier = Math.Pow(10, decimals);
        var aInt = Convert.ToInt32(a * multiplier);
        var bInt = Convert.ToInt32(b * multiplier);
        return aInt > bInt ? CompareResult.Greater : aInt < bInt ? CompareResult.Less : CompareResult.Equal;
    }

    private enum CompareResult
    {
        Greater,
        Less,
        Equal
    }

System.OverflowException is thrown if one of the double is larger than int max or infinity. Also, this is not an elegant way to compare double.
Importants: 
I am not going to round down with x significant figures. I have already provide this solution in my question, my question is: Even round down to x significant figures, it will return true when comparing them.
Again
I am not finding a way to round down or truncate the doubles to x significant digits. I have no problem on this part.
Answer
Thanks for @m88 answer. But it still cannot solve my problem.
I finally solve this issue using sigma. (Reference: http://forums.codeguru.com/showthread.php?506300-float-double-value-comparison-significant-figures.)
Thanks to some people misunderstand the problem and vote it as a duplicated question. I can't post my answer for others facing the same problem. So I post the answer in my question. I hope it can help others.
public static int CompareTo(this double value1, double value2, int decimals)
{
    var diff = value1 - value2;
    var sigma = Math.Pow(10, -decimals - 1);
    return Math.Abs(diff) < sigma ? 0 : diff > 0 ? 1 : -1;
}

A:

If you use the Math.Round method to round a and b to 4 decimals, a (0.7045) will always be greater than b (0.7044):
const double a = 0.70448;
const double b = 0.70441;
if (Math.Round(a, 4) > Math.Round(b, 4))
...

If you want to truncate the values, you need to be aware of the fact that not all fractions can be accurately represented in a double. If you want "exact" truncating, you might consider converting the double value to a string, truncate the string and then convert the truncated string value back to double. Something like this:
private static double Truncate(double d, int decimals)
{
    string s = d.ToString(System.Globalization.CultureInfo.InvariantCulture);
    int index = s.IndexOf(System.Globalization.CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator);
    if (index > -1)
        return Convert.ToDouble($"{s.Substring(0, index + 1)}{s.Substring(index + 1, decimals)}", System.Globalization.CultureInfo.InvariantCulture);

    return d;
}

Usage:
const double a = 0.70448;
const double b = 0.70441;

if (Truncate(a, 4) >= Truncate(b, 4))
....

Obviously, if you don't want any "floating issues" as you said in the chat, you cannot work with floating point data types.

