_ecvt
Sayıyı double
dizeye dönüştürür. Bu işlevin daha güvenli bir sürümü kullanılabilir; bkz _ecvt_s
. .
Sözdizimi
char *_ecvt(
double value,
int count,
int *dec,
int *sign
);
Parametreler
value
Dönüştürülecek sayı.
count
Depolanan basamak sayısı.
dec
Depolanan ondalık nokta konumu.
sign
Dönüştürülen sayının işareti.
Dönüş değeri
_ecvt
basamak dizesine bir işaretçi döndürür; NULL
hata oluştuysa.
Açıklamalar
işlevi kayan _ecvt
noktalı bir sayıyı karakter dizesine dönüştürür. value
parametresi dönüştürülecek kayan noktalı sayıdır. Bu işlev en çok count
basamak value
sayısını dize olarak depolar ve null karakter ('\0') ekler. içindeki value
basamak sayısı değerini aşarsa count
, düşük sıralı basamak yuvarlanmış olur. Basamaktan count
azsa dize sıfırlarla doldurulur.
tarafından _ecvt
döndürülen toplam basamak sayısı değerini aşamaz _CVTBUFSIZE
.
Dizede yalnızca basamaklar depolanır. Ondalık noktasının konumu ve işareti value
çağrıdan sonra ve sign
çağrıdan dec
sonra elde edilebilir. parametresi, dec
dizenin başına göre ondalık noktasının konumunu veren bir tamsayı değerini gösterir. 0 veya negatif tamsayı değeri, ondalık ayırıcının ilk basamuğun solunda olduğunu gösterir. parametresi, sign
dönüştürülen sayının işaretini gösteren bir tamsayıya işaret eder. Tamsayı değeri 0 ise, sayı pozitiftir. Aksi takdirde, sayı negatiftir.
ile _fcvt
arasındaki _ecvt
fark, parametresinin yorumlanmasındadırcount
. _ecvt
count
çıkış dizesindeki _fcvt
toplam basamak sayısı olarak, ondalık ayırıcıdan sonraki basamak sayısı olarak yorumlarcount
.
_ecvt
ve _fcvt
dönüştürme için statik olarak ayrılmış tek bir arabellek kullanın. Bu yordamlardan birine yapılan her çağrı, önceki çağrının sonucunu yok eder.
Bu işlev parametrelerini doğrular. veya dec
sign
veya NULL
count
0 ise, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, errno
EINVAL olarak ayarlanır ve NULL
döndürülür.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
_ecvt |
<stdlib.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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
Ayrıca bkz.
Veri dönüştürme
Matematik ve kayan nokta desteği
atof
, _atof_l
, _wtof
, _wtof_l
_fcvt
_gcvt