57 #if defined(Q_OS_LINUX) && !defined(__UCLIBC__) 63 # define LLONG_MAX Q_INT64_C(0x7fffffffffffffff) 66 # define LLONG_MIN (-LLONG_MAX - Q_INT64_C(1)) 69 # define ULLONG_MAX Q_UINT64_C(0xffffffffffffffff) 74 #ifndef QT_QLOCALE_USES_FCVT 76 int *
sign,
char **rve,
char **digits_str);
84 if (base != 10 || _zero.
unicode() ==
'0') {
108 return QString(reinterpret_cast<QChar *>(p), 65 - (p - buff));
113 return qulltoa(l < 0 ? -l : l, base, zero);
119 bool always_show_decpt,
120 bool thousands_group)
123 for (
int i = 0; i < -decpt; ++i)
127 else if (decpt > digits.
length()) {
128 for (
int i = digits.
length(); i < decpt; ++i)
133 uint decimal_digits = digits.
length() - decpt;
134 for (
uint i = decimal_digits; i < precision; ++i)
138 for (
uint i = digits.
length(); i < precision; ++i)
144 if (always_show_decpt || decpt < digits.
length())
145 digits.
insert(decpt, decimal);
147 if (thousands_group) {
148 for (
int i = decpt - 3; i > 0; i -= 3)
162 bool always_show_decpt)
167 for (
uint i = digits.
length(); i < precision + 1; ++i)
171 for (
uint i = digits.
length(); i < precision; ++i)
177 if (always_show_decpt || digits.
length() > 1)
178 digits.
insert(1, decimal);
180 digits.
append(exponential);
202 if (i == 0 || data[i - 1] <
'0' || data[i - 1] >
'9')
204 if (i == l - 1 || data[i + 1] <
'0' || data[i + 1] >
'9')
213 }
else if (c ==
'e' || c ==
'E') {
230 while (i < l && group_cnt > 0) {
239 if ((decpt_idx - i) % 4 != 0)
243 memmove(data + i, data + i + 1, l - i - 1);
251 && (decpt_idx - i) % 4 == 0
252 && !(i == 0 && c ==
'-'))
261 #if defined(Q_CC_MWERKS) && defined(Q_OS_WIN32) 262 inline bool isascii(
int c)
264 return (c >= 0 && c <=127);
312 register const char *s = nptr;
314 register unsigned char c;
316 register int any, cutlim;
327 }
while (isspace(c));
338 if ((base == 0 || base == 16) &&
339 c ==
'0' && (*s ==
'x' || *s ==
'X')) {
345 base = c ==
'0' ? 8 : 10;
346 qbase = unsigned(base);
349 for (acc = 0, any = 0;; c = *s++) {
355 c -= isupper(c) ?
'A' - 10 :
'a' - 10;
360 if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
371 }
else if (any < 0) {
377 *endptr = (any ? s - 1 : nptr);
393 register const char *s;
395 register unsigned char c;
397 register int neg, any, cutlim;
407 }
while (isspace(c));
416 if ((base == 0 || base == 16) &&
417 c ==
'0' && (*s ==
'x' || *s ==
'X')) {
423 base = c ==
'0' ? 8 : 10;
443 qbase = unsigned(base);
445 cutlim = cutoff % qbase;
447 for (acc = 0, any = 0;; c = *s++) {
453 c -= isupper(c) ?
'A' - 10 :
'a' - 10;
458 if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
474 *endptr = (any >= 0 ? s - 1 : nptr);
482 #ifndef QT_QLOCALE_USES_FCVT 559 #if defined(LIBC_SCCS) && !defined(lint) 560 __RCSID(
"$NetBSD: strtod.c,v 1.26 1998/02/03 18:44:21 perry Exp $");
573 #define IEEE_BIG_OR_LITTLE_ENDIAN 1 581 #define IEEE_BIG_OR_LITTLE_ENDIAN 589 #define ULong quint32 591 #define MALLOC malloc 593 #ifdef BSD_QDTOA_DEBUG 598 #define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);} 601 #ifdef Unsigned_Shifts 602 #define Sign_Extend(a,b) if (b < 0) a |= 0xffff0000; 604 #define Sign_Extend(a,b) 607 #if (defined(IEEE_BIG_OR_LITTLE_ENDIAN) + defined(VAX) + defined(IBM)) != 1 608 #error Exactly one of IEEE_BIG_OR_LITTLE_ENDIAN, VAX, or IBM should be defined. 614 if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
615 return (ptr[0]<<24) + (ptr[1]<<16) + (ptr[2]<<8) + ptr[3];
617 return (ptr[7]<<24) + (ptr[6]<<16) + (ptr[5]<<8) + ptr[4];
624 if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
625 ptr[0] =
uchar(l>>24);
626 ptr[1] =
uchar(l>>16);
627 ptr[2] =
uchar(l>>8);
630 ptr[7] =
uchar(l>>24);
631 ptr[6] =
uchar(l>>16);
632 ptr[5] =
uchar(l>>8);
640 if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
641 return (ptr[4]<<24) + (ptr[5]<<16) + (ptr[6]<<8) + ptr[7];
643 return (ptr[3]<<24) + (ptr[2]<<16) + (ptr[1]<<8) + ptr[0];
649 if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
650 ptr[4] =
uchar(l>>24);
651 ptr[5] =
uchar(l>>16);
652 ptr[6] =
uchar(l>>8);
655 ptr[3] =
uchar(l>>24);
656 ptr[2] =
uchar(l>>16);
657 ptr[1] =
uchar(l>>8);
711 #if defined(IEEE_BIG_OR_LITTLE_ENDIAN) 713 #define Exp_shift1 20 714 #define Exp_msk1 0x100000 715 #define Exp_msk11 0x100000 716 #define Exp_mask 0x7ff00000 721 #define Exp_1 0x3ff00000 722 #define Exp_11 0x3ff00000 724 #define Frac_mask 0xfffff 725 #define Frac_mask1 0xfffff 728 #define Bndry_mask 0xfffff 729 #define Bndry_mask1 0xfffff 730 #if defined(LSB) && defined(Q_OS_VXWORKS) 734 #define Sign_bit 0x80000000 740 #define Infinite(x) (getWord0(x) == 0x7ff00000) 742 #undef Sudden_Underflow 743 #define Sudden_Underflow 746 #define Exp_shift1 24 747 #define Exp_msk1 0x1000000 748 #define Exp_msk11 0x1000000 749 #define Exp_mask 0x7f000000 752 #define Exp_1 0x41000000 753 #define Exp_11 0x41000000 755 #define Frac_mask 0xffffff 756 #define Frac_mask1 0xffffff 759 #define Bndry_mask 0xefffff 760 #define Bndry_mask1 0xffffff 762 #define Sign_bit 0x80000000 764 #define Tiny0 0x100000 771 #define Exp_msk1 0x80 772 #define Exp_msk11 0x800000 773 #define Exp_mask 0x7f80 776 #define Exp_1 0x40800000 777 #define Exp_11 0x4080 779 #define Frac_mask 0x7fffff 780 #define Frac_mask1 0xffff007f 783 #define Bndry_mask 0xffff007f 784 #define Bndry_mask1 0xffff007f 786 #define Sign_bit 0x8000 800 #define rounded_product(a,b) a = rnd_prod(a, b) 801 #define rounded_quotient(a,b) a = rnd_quot(a, b) 802 extern double rnd_prod(
double,
double), rnd_quot(
double,
double);
804 #define rounded_product(a,b) a *= b 805 #define rounded_quotient(a,b) a /= b 808 #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1)) 809 #define Big1 0xffffffff 852 #define Bcopy(x,y) memcpy(reinterpret_cast<char *>(&x->sign), reinterpret_cast<char *>(&y->sign), \ 853 y->wds*sizeof(Long) + 2*sizeof(int)) 871 y = (xi & 0xffff) * m + a;
872 z = (xi >> 16) * m + (y >> 16);
874 *x++ = (z << 16) + (y & 0xffff);
902 for(k = 0, y = 1; x > y; y <<= 1, k++) ;
909 b->
x[0] = y9 & 0xffff;
910 b->
wds = (b->
x[1] = y9 >> 16) ? 2 : 1;
916 do b =
multadd(b, 10, *s++ -
'0');
923 b =
multadd(b, 10, *s++ -
'0');
931 if (!(x & 0xffff0000)) {
935 if (!(x & 0xff000000)) {
939 if (!(x & 0xf0000000)) {
943 if (!(x & 0xc0000000)) {
947 if (!(x & 0x80000000)) {
949 if (!(x & 0x40000000))
1012 ULong *
x, *xa, *xae, *xb, *xbe, *xc, *xc0;
1029 for(x = c->
x, xa = x + wc; x < xa; x++)
1037 for(; xb < xbe; xb++, xc0++) {
1038 if ((y = *xb & 0xffff) != 0) {
1043 z = (*x & 0xffff) * y + (*xc & 0xffff) + carry;
1045 z2 = (*x++ >> 16) * y + (*xc >> 16) + carry;
1052 if ((y = *xb >> 16) != 0) {
1058 z = (*x & 0xffff) * y + (*xc >> 16) + carry;
1061 z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry;
1069 for(; xb < xbe; xc0++) {
1075 z = *x++ * y + *xc + carry;
1084 for(xc0 = c->
x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;
1107 static const int p05[3] = { 5, 25, 125 };
1109 if ((i = k & 3) != 0)
1110 #if defined(Q_OS_IRIX) && defined(Q_CC_GNU) 1113 int *p = (
int *) p05;
1125 p5 = p5s =
i2b(625);
1136 if (!(p51 = p5->
next)) {
1149 ULong *x, *x1, *xe, z;
1157 n1 = n + b->
wds + 1;
1158 for(i = b->
maxwds; n1 > i; i <<= 1)
1162 for(i = 0; i < n; i++)
1171 *x1++ = *x << k | z;
1183 *x1++ = *x << k & 0xffff | z;
1201 ULong *xa, *xa0, *xb, *xb0;
1206 #ifdef BSD_QDTOA_DEBUG 1207 if (i > 1 && !a->
x[i-1])
1208 Bug(
"cmp called with a->x[a->wds-1] == 0");
1209 if (j > 1 && !b->
x[j-1])
1210 Bug(
"cmp called with b->x[b->wds-1] == 0");
1220 return *xa < *xb ? -1 : 1;
1232 ULong *xa, *xae, *xb, *xbe, *xc;
1264 y = (*xa & 0xffff) - (*xb & 0xffff) + borrow;
1267 z = (*xa++ >> 16) - (*xb++ >> 16) + borrow;
1274 y = (*xa & 0xffff) + borrow;
1277 z = (*xa++ >> 16) + borrow;
1284 y = *xa++ - *xb++ + borrow;
1309 #ifndef Sudden_Underflow 1317 #ifndef Sudden_Underflow 1321 if (L < Exp_shift) {
1328 setWord1(&a, L >= 31 ? 1U : 1U << (31 - L));
1337 ULong *xa, *xa0, w, y, z;
1344 #ifdef BSD_QDTOA_DEBUG 1345 if (!y) Bug(
"zero y in b2d");
1352 w = xa > xa0 ? *--xa : 0;
1356 z = xa > xa0 ? *--xa : 0;
1359 y = xa > xa0 ? *--xa : 0;
1360 setWord1(&d, z << k | y >> (32 - k));
1367 if (k <
Ebits + 16) {
1368 z = xa > xa0 ? *--xa : 0;
1370 w = xa > xa0 ? *--xa : 0;
1371 y = xa > xa0 ? *--xa : 0;
1375 z = xa > xa0 ? *--xa : 0;
1376 w = xa > xa0 ? *--xa : 0;
1379 y = xa > xa0 ? *--xa : 0;
1380 setWord1(&d, w << k + 16 | y << k);
1401 #ifdef Sudden_Underflow 1413 x[0] = y | z << (32 - k);
1418 i = b->
wds = (x[1] = z) ? 2 : 1;
1421 #ifdef BSD_QDTOA_DEBUG 1423 Bug(
"Zero passed to d2b");
1434 x[0] = y | z << 32 - k & 0xffff;
1435 x[1] = z >> k - 16 & 0xffff;
1441 x[1] = y >> 16 | z << 16 - k & 0xffff;
1442 x[2] = z >> k & 0xffff;
1455 #ifdef BSD_QDTOA_DEBUG 1457 Bug(
"Zero passed to d2b");
1475 #ifndef Sudden_Underflow 1479 *e = (de -
Bias - (
P-1) << 2) + k;
1482 *e = de -
Bias - (
P-1) + k;
1485 #ifndef Sudden_Underflow 1488 *e = de -
Bias - (
P-1) + 1 + k;
1490 *bits = 32*i -
hi0bits(x[i-1]);
1492 *bits = (i+2)*16 -
hi0bits(x[i]);
1507 k = ka - kb + 32*(a->
wds - b->
wds);
1509 k = ka - kb + 16*(a->
wds - b->
wds);
1535 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
1536 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
1544 static const double bigtens[] = { 1e16, 1e32, 1e64, 1e128, 1e256 };
1545 static const double tinytens[] = { 1e-16, 1e-32, 1e-64, 1e-128, 1e-256 };
1549 static const double bigtens[] = { 1e16, 1e32, 1e64 };
1550 static const double tinytens[] = { 1e-16, 1e-32, 1e-64 };
1553 static const double bigtens[] = { 1e16, 1e32 };
1554 static const double tinytens[] = { 1e-16, 1e-32 };
1572 int bb2, bb5, bbe, bd2, bd5, bbbits, bs2,
c, dsign,
1573 e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0,
sign;
1574 const char *s, *s0, *s1;
1575 double aadj, aadj1, adj, rv, rv0;
1579 Bigint *bb = NULL, *bd = NULL, *bs = NULL, *delta = NULL;
1590 const char decimal_point =
'.';
1592 sign = nz0 = nz = 0;
1596 for(s = s00; isspace(
uchar(*s)); s++)
1602 }
else if (*s ==
'+') {
1613 while(*++s ==
'0') ;
1619 for(nd = nf = 0; (c = *s) >=
'0' && c <=
'9'; nd++, s++)
1625 if (c == decimal_point) {
1628 for(; c ==
'0'; c = *++s)
1630 if (c >
'0' && c <=
'9') {
1638 for(; c >=
'0' && c <=
'9'; c = *++s) {
1643 for(i = 1; i < nz; i++)
1658 if (c ==
'e' || c ==
'E') {
1659 if (!nd && !nz && !nz0) {
1671 if (c >=
'0' && c <=
'9') {
1674 if (c >
'0' && c <=
'9') {
1677 while((c = *++s) >=
'0' && c <=
'9')
1679 if (s - s1 > 8 || L > 19999)
1712 #if defined(Q_OS_IRIX) && defined(Q_CC_GNU) 1715 double *t = (
double *)
tens;
1716 rv = t[k - 9] * rv + z;
1719 rv =
tens[k - 9] * rv + z;
1724 #ifndef RND_PRODQUOT
1733 goto vax_ovfl_check;
1754 > Exp_msk1*(DBL_MAX_EXP+
Bias-1-
P))
1763 #ifndef Inaccurate_Divide 1775 if ((i = e1 & 15) != 0)
1778 if (e1 > DBL_MAX_10_EXP) {
1800 for(j = 0; e1 > 1; j++, e1 >>= 1)
1807 > Exp_msk1*(DBL_MAX_EXP+
Bias-
P))
1809 if (z > Exp_msk1*(DBL_MAX_EXP+
Bias-1-
P)) {
1823 if ((i = e1 & 15) != 0)
1829 for(j = 0; e1 > 1; j++, e1 >>= 1)
1863 bd0 =
s2b(s0, nd0, nd, y);
1868 bb =
d2b(rv, &bbe, &bbbits);
1884 #ifdef Sudden_Underflow 1886 j = 1 + 4*
P - 3 - bbbits + ((bbe + bbbits - 1) & 3);
1891 i = bbe + bbbits - 1;
1899 i = bb2 < bd2 ? bb2 : bd2;
1921 delta =
diff(bb, bd);
1922 dsign = delta->sign;
1932 if (
cmp(delta, bs) > 0)
1955 #ifdef Sudden_Underflow 1975 #ifndef ROUND_BIASED 1981 #ifndef ROUND_BIASED 1984 #ifndef Sudden_Underflow 1992 if ((aadj =
ratio(delta, bs)) <= 2.) {
1996 #ifndef Sudden_Underflow 2007 if (aadj < 2./FLT_RADIX)
2008 aadj = 1./FLT_RADIX;
2016 aadj1 = dsign ? aadj : -aadj;
2017 #ifdef Check_FLT_ROUNDS 2018 switch(FLT_ROUNDS) {
2027 if (FLT_ROUNDS == 0)
2038 adj = aadj1 *
ulp(rv);
2041 Exp_msk1*(DBL_MAX_EXP+
Bias-
P)) {
2052 #ifdef Sudden_Underflow 2056 adj = aadj1 *
ulp(rv);
2059 if ((
getWord0(rv) & Exp_mask) <
P*Exp_msk1)
2061 if ((
getWord0(rv) & Exp_mask) <=
P*Exp_msk1)
2075 adj = aadj1 *
ulp(rv);
2086 if (y <= (
P-1)*Exp_msk1 && aadj >= 1.) {
2087 aadj1 = int(aadj + 0.5);
2091 adj = aadj1 *
ulp(rv);
2102 if (aadj < .4999999 || aadj > .5000001)
2105 else if (aadj < .4999999/FLT_RADIX)
2123 return sign ? -rv : rv;
2131 ULong *bx, *bxe, *sx, *sxe;
2138 #ifdef BSD_QDTOA_DEBUG 2140 Bug(
"oversize b in quorem");
2148 q = *bxe / (*sxe + 1);
2149 #ifdef BSD_QDTOA_DEBUG 2151 Bug(
"oversized quotient in quorem");
2159 ys = (si & 0xffff) * q + carry;
2160 zs = (si >> 16) * q + (ys >> 16);
2162 y = (*bx & 0xffff) - (ys & 0xffff) + borrow;
2165 z = (*bx >> 16) - (zs & 0xffff) + borrow;
2170 ys = *sx++ * q + carry;
2172 y = *bx - (ys & 0xffff) + borrow;
2181 while(--bxe > bx && !*bxe)
2186 if (
cmp(b, S) >= 0) {
2195 ys = (si & 0xffff) + carry;
2196 zs = (si >> 16) + (ys >> 16);
2198 y = (*bx & 0xffff) - (ys & 0xffff) + borrow;
2201 z = (*bx >> 16) - (zs & 0xffff) + borrow;
2208 y = *bx - (ys & 0xffff) + borrow;
2218 while(--bxe > bx && !*bxe)
2260 #if defined(Q_OS_WIN) && defined (Q_CC_GNU) && !defined(_clear87) // See QTBUG-7576 2262 __attribute__ ((dllimport))
unsigned int __cdecl __MINGW_NOTHROW
_control87 (
unsigned int unNew,
unsigned int unMask);
2263 __attribute__ ((dllimport))
unsigned int __cdecl __MINGW_NOTHROW _clearfp (
void);
2265 # define _clear87 _clearfp 2280 # define MCW_EM _MCW_EM 2282 # define MCW_EM 0x0008001F 2288 #if defined(Q_OS_LINUX) && !defined(__UCLIBC__) 2290 feholdexcept(&envp);
2293 char *s =
_qdtoa(d, mode, ndigits, decpt, sign, rve, resultp);
2300 _control87(oldbits, _MCW_EM|_MCW_DN|_MCW_RC);
2304 #if defined(Q_OS_LINUX) && !defined(__UCLIBC__) 2348 int bbits, b2, b5, be, dig, i, ieps, ilim0,
2349 j, j1, k, k0, k_check, leftright, m2, m5, s2, s5,
2351 int ilim = 0, ilim1 = 0, spec_case = 0;
2353 #ifndef Sudden_Underflow 2357 Bigint *b, *b1, *delta, *mhi, *
S;
2371 #if defined(IEEE_Arith) + defined(VAX) 2384 const_cast<char*
>(
"NaN");
2400 s =
const_cast<char*
>(
"0");
2406 b =
d2b(d, &be, &bbits);
2407 #ifdef Sudden_Underflow 2447 #ifndef Sudden_Underflow 2453 i = bbits + be + (
Bias + (
P-1) - 1);
2458 i -= (
Bias + (
P-1) - 1) + 1;
2462 ds = (d2-1.5)*0.289529654602168 + 0.1760912590558 + i*0.301029995663981;
2464 if (ds < 0. && ds != k)
2491 if (mode < 0 || mode > 9)
2512 ilim = ilim1 = i = ndigits;
2518 i = ndigits + k + 1;
2525 *resultp =
static_cast<char *
>(malloc(i + 1));
2533 if (ilim >= 0 && ilim <=
Quick_max && try_quick) {
2551 for(; j; j >>= 1, i++)
2558 else if ((j1 = -k) != 0) {
2559 d *=
tens[j1 & 0xf];
2560 for(j = j1 >> 4; j; j >>= 1, i++)
2566 if (k_check && d < 1. && ilim > 0) {
2585 #ifndef No_leftright 2590 eps = 0.5/
tens[ilim-1] - eps;
2594 *s++ =
'0' + int(L);
2608 #if defined(Q_OS_IRIX) && defined(Q_CC_GNU) 2610 double *t = (
double *)
tens;
2613 eps *=
tens[ilim-1];
2615 for(i = 1;; i++, d *= 10.) {
2618 *s++ =
'0' + int(L);
2622 else if (d < 0.5 - eps) {
2623 while(*--s ==
'0') {}
2630 #ifndef No_leftright 2642 if (be >= 0 && k <=
Int_max) {
2645 if (ndigits < 0 && ilim <= 0) {
2647 if (ilim < 0 || d <= 5*ds)
2654 #ifdef Check_FLT_ROUNDS 2661 *s++ =
'0' + int(L);
2664 if (d > ds || (d == ds && L & 1)) {
2688 #ifndef Sudden_Underflow 2689 denorm ? be + (
Bias + (
P-1) - 1 + 1) :
2692 1 + 4*
P - 3 - bbits + ((bbits + be - 1) & 3);
2706 if ((i = ilim) < 0) {
2715 if (m2 > 0 && s2 > 0) {
2716 i = m2 < s2 ? m2 : s2;
2729 if ((j = b5 - m5) != 0)
2743 #ifndef Sudden_Underflow
2764 if ((i = ((s5 ? 32 -
hi0bits(S->
x[S->
wds-1]) : 1) + s2) & 0x1f) != 0)
2767 if (i = ((s5 ? 32 -
hi0bits(S->
x[S->
wds-1]) : 1) + s2) & 0xf)
2795 if (ilim <= 0 && mode > 2) {
2796 if (ilim < 0 ||
cmp(b,S =
multadd(S,5,0)) <= 0) {
2828 delta =
diff(S, mhi);
2829 j1 = delta->
sign ? 1 :
cmp(b, delta);
2831 #ifndef ROUND_BIASED 2832 if (j1 == 0 && !mode && !(
getWord1(d) & 1)) {
2841 if (j < 0 || (j == 0 && !mode
2842 #ifndef ROUND_BIASED
2849 if ((j1 > 0 || (j1 == 0 && dig & 1))
2870 mlo = mhi =
multadd(mhi, 10, 0);
2879 *s++ = dig =
quorem(b,S) +
'0';
2889 if (j > 0 || (j == 0 && dig & 1)) {
2900 while(*--s ==
'0') {}
2906 if (mlo && mlo != mhi)
2927 Q_CORE_EXPORT char *
qdtoa(
double d,
int mode,
int ndigits,
int *decpt,
int *
sign,
char **rve,
char **resultp)
2937 res = fcvt(
d, ndigits, decpt,
sign);
2939 res = ecvt(
d, ndigits, decpt,
sign);
2943 const int stop =
qMax(1, *decpt);
2945 for (i = n-1; i >= stop; --i) {
2951 *resultp =
static_cast<char*
>(malloc(n + 1));
2959 double ret = strtod((
char*)s00, (
char**)se);
2961 if((ret == 0.0
l &&
errno == ERANGE)
2962 || ret == HUGE_VAL || ret == -HUGE_VAL)
2970 #endif // QT_QLOCALE_USES_FCVT
#define QT_END_NAMESPACE
This macro expands to.
ushort unicode() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
int length() const
Returns the number of characters in this string.
QString & prepend(QChar c)
#define QT_END_INCLUDE_NAMESPACE
This macro is equivalent to QT_BEGIN_NAMESPACE.
long ASN1_INTEGER_get ASN1_INTEGER * a
The QString class provides a Unicode character string.
The QChar class provides a 16-bit Unicode character.
Q_DECL_CONSTEXPR const T & qMax(const T &a, const T &b)
static QString longLongToString(const QChar zero, const QChar group, const QChar plus, const QChar minus, qint64 l, int precision, int base, int width, unsigned flags)
#define QT_BEGIN_NAMESPACE
This macro expands to.
static const char * data(const QByteArray &arr)
const T * ptr(const T &t)
uint qstrlen(const char *str)
QString & append(QChar c)
uint qstrlen(const char *str)
#define QT_BEGIN_INCLUDE_NAMESPACE
This macro is equivalent to QT_END_NAMESPACE.
QString & insert(int i, QChar c)
Q_CORE_EXPORT char * qstrncpy(char *dst, const char *src, uint len)