Convert double/float to string

后端 未结 7 1388
渐次进展
渐次进展 2020-11-29 04:55

I need to convert a floating point number to an equivalent string in decimal (or other base). Conversion at first needs to be done in the format xE+0 where

7条回答
  •  孤街浪徒
    2020-11-29 05:15

    I know maybe it is unnecessary, but I made a function which converts float to string:

    CODE:

    #include 
    
    /** Number on countu **/
    
    int n_tu(int number, int count)
    {
        int result = 1;
        while(count-- > 0)
            result *= number;
    
        return result;
    }
    
    /*** Convert float to string ***/
    void float_to_string(float f, char r[])
    {
        long long int length, length2, i, number, position, sign;
        float number2;
    
        sign = -1;   // -1 == positive number
        if (f < 0)
        {
            sign = '-';
            f *= -1;
        }
    
        number2 = f;
        number = f;
        length = 0;  // Size of decimal part
        length2 = 0; // Size of tenth
    
        /* Calculate length2 tenth part */
        while( (number2 - (float)number) != 0.0 && !((number2 - (float)number) < 0.0) )
        {
             number2 = f * (n_tu(10.0, length2 + 1));
             number = number2;
    
             length2++;
        }
    
        /* Calculate length decimal part */
        for (length = (f > 1) ? 0 : 1; f > 1; length++)
            f /= 10;
    
        position = length;
        length = length + 1 + length2;
        number = number2;
        if (sign == '-')
        {
            length++;
            position++;
        }
    
        for (i = length; i >= 0 ; i--)
        {
            if (i == (length))
                r[i] = '\0';
            else if(i == (position))
                r[i] = '.';
            else if(sign == '-' && i == 0)
                r[i] = '-';
            else
            {
                r[i] = (number % 10) + '0';
                number /=10;
            }
        }
    }
    

提交回复
热议问题