小伙看你根骨奇佳,潜力无限,来学PHP伐。
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'; } '; }
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的話,可以自己封裝一個:
這樣程式在別的編譯期下既,而且在VC++下面又可以發揮優異的效能。
為什麼沒有人提grisu演算法。它是一個最快的,「完全正確」的演算法放庫跑:https://github.com/night-shift/fpconv
grisu
sprintf不夠有效率?
不用函式庫函數把sprintf關於%f的拿出來就好了。
如果你想連sprintf對%的處理都省掉的話,建議使用_gcvt_s函數。
使用方法如下:
如果你使用的編譯期沒有_gcvt_s的話,可以自己封裝一個:
rrreee這樣程式在別的編譯期下既,而且在VC++下面又可以發揮優異的效能。
為什麼沒有人提
grisu
演算法。它是一個最快的,「完全正確」的演算法放庫跑:https://github.com/night-shift/fpconv