Share via


_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

字串中只能儲存數字。 呼叫之後,可從 decsign 取得小數點位置和 value 的正負號。 dec 參數指向整數值,並提供字串開頭的小數點位置。 0 或負整數值表示小數點位於第一位數字的左邊。 sign 參數指向表示已轉換數字正負號的整數。 如果整數值為 0,則數字為正數。 否則,數字為負數。

_ecvt_fcvt 之間的差異位於 count 參數解譯中。 _ecvtcount 解譯為輸出字串的位數總數,而 _fcvtcount 解譯為小數點後的位數。

_ecvt_fcvt 使用單一靜態配置的緩衝區來進行轉換。 每呼叫其中一個此類常式會導致先前呼叫結果的終結。

這個函式會驗證它的參數。 如果 decsign 為 ,或 countNULL 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

另請參閱

資料轉換
數學和浮點支援
atof, _atof_l, _wtof, _wtof_l
_fcvt
_gcvt