_ecvt
將 double
數字轉換為字串。 此函式有更安全的版本可供使用;請參閱 _ecvt_s
。
語法
char *_ecvt(
double value,
int count,
int *dec,
int *sign
);
參數
value
要轉換的數字。
count
儲存的位數。
dec
儲存的小數點位置。
sign
已轉換數字的正負號。
傳回值
_ecvt
會傳回數位字串的指標; NULL
如果發生錯誤,則為 。
備註
_ecvt
函式會將浮點數轉換為字元字串。 value
參數是要轉換的浮點數。 此函式最多可將 count
位數的 value
儲存為字串,並在結尾處附加 null 字元 ('\0')。 如果 value
的位數超過 count
,則會將低位數四捨五入。 如果少於 count
個位數,則以零填補字串。
所 _ecvt
傳回的位數總數不會超過 _CVTBUFSIZE
。
字串中只能儲存數字。 呼叫之後,可從 dec
和 sign
取得小數點位置和 value
的正負號。 dec
參數指向整數值,並提供字串開頭的小數點位置。 0 或負整數值表示小數點位於第一位數字的左邊。 sign
參數指向表示已轉換數字正負號的整數。 如果整數值為 0,則數字為正數。 否則,數字為負數。
_ecvt
和 _fcvt
之間的差異位於 count
參數解譯中。 _ecvt
將 count
解譯為輸出字串的位數總數,而 _fcvt
將 count
解譯為小數點後的位數。
_ecvt
和 _fcvt
使用單一靜態配置的緩衝區來進行轉換。 每呼叫其中一個此類常式會導致先前呼叫結果的終結。
這個函式會驗證它的參數。 如果 dec
或 sign
為 ,或 count
為 NULL
0,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,errno
則會設定為 EINVAL 並NULL
傳回 。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
函式 | 必要的標頭 |
---|---|
_ecvt |
<stdlib.h> |
如需相容性詳細資訊,請參閱相容性。
範例
// crt_ecvt.c
// compile with: /W3
// This program uses _ecvt to convert a
// floating-point number to a character string.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int decimal, sign;
char *buffer;
int precision = 10;
double source = 3.1415926535;
buffer = _ecvt( source, precision, &decimal, &sign ); // C4996
// Note: _ecvt is deprecated; consider using _ecvt_s instead
printf( "source: %2.10f buffer: '%s' decimal: %d sign: %d\n",
source, buffer, decimal, sign );
}
source: 3.1415926535 buffer: '3141592654' decimal: 1 sign: 0