类型转换 - 求一个高效的double转char*的算法,C或C++
伊谢尔伦
伊谢尔伦 2017-04-17 13:10:43
0
3
741
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(3)
大家讲道理

sprintf不夠有效率?
不用函式庫函數把sprintf關於%f的拿出來就好了。

伊谢尔伦

如果你想連sprintf對%的處理都省掉的話,建議使用_gcvt_s函數。

使用方法如下:

    char buffer[320];
    _gcvt_s(buffer, 320, number, 30);
    vint len = (vint)strlen(buffer);
    if (buffer[len - 1] == '.')
    {
        buffer[len - 1] = '
void _gcvt_s(char* buffer, size_t size, double value, vint numberOfDigits)
{
    sprintf(buffer, "%f", value);
    char* point = strchr(buffer, '.');
    if(!point) return;
    char* zero = buffer + strlen(buffer);
    while(zero[-1] == '0')
    {
        *--zero = 'rrreee';
    }
    if(zero[-1] == '.') *--zero = 'rrreee';
}
'; }

如果你使用的編譯期沒有_gcvt_s的話,可以自己封裝一個:

rrreee

這樣程式在別的編譯期下既,而且在VC++下面又可以發揮優異的效能。

伊谢尔伦

為什麼沒有人提grisu演算法。它是一個最快的,「完全正確」的演算法
放庫跑:https://github.com/night-shift/fpconv

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板