Convert String to Double

Sample input: "123.456" . Must contain exact 1 dot ('.'). The rest are decimal numbers.
Output: double value of that string.
Solution:

private int GetIntValue(char x) {
    return (int)(x - '0');
}

public double ConvertToDouble(string numStr) {
    double result = 0;
    char[] array = numStr.ToCharArray();
    int index = array.Length - 1;
    while (index > 0) {
        if (array[index] == '.') {
            break;
        }
        result = ( result + GetIntValue(array[index--]) ) * 0.1;
    }

    index--;

    int factor = 1;
    while (index >= 0) {
        result = result + GetIntValue(array[index--]) * factor;
        factor *= 10;
    }

    Console.WriteLine("result: " + result);
}

Mistakes that I made:
* Typed result += GetIntValue[array[index--] * 0.1 from the first loop.
* Did not decrement index after the first loop.
* On the second loop, I typed while(index > 0) which resulted index 0 was not included on the result.

Comments

Hmm.. kayaknya bs lebih

Hmm.. kayaknya bs lebih simple.. pake string tokenizer.. split by dot "." abis itu array [0] di-casting ke double dan array [1] di-casting ke double tapi dikali 0,1. Resultnya jumlahan dari array[0] dan array[1]

Hmm.. kayaknya bs lebih

Hmm.. kayaknya bs lebih simple.. pake string tokenizer.. split by dot "." abis itu array [0] di-casting ke double dan array [1] di-casting ke double tapi dikali 0,1. Resultnya jumlahan dari array[0] dan array[1]

Post new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.