@@ -324,7 +324,7 @@ func (dec *Decoder) getFloat32() (float32, error) {
324
324
continue
325
325
case '.' :
326
326
// we get part before decimal as integer
327
- beforeDecimal := dec .atoi32 (start , end )
327
+ beforeDecimal := dec .atoi64 (start , end )
328
328
// then we get part after decimal as integer
329
329
start = j + 1
330
330
// get number after the decimal point
@@ -341,14 +341,14 @@ func (dec *Decoder) getFloat32() (float32, error) {
341
341
continue
342
342
} else if (c == 'e' || c == 'E' ) && j < i - 1 {
343
343
// we get the number before decimal
344
- var afterDecimal int32
344
+ var afterDecimal int64
345
345
expI := end - start + 2
346
346
// if exp is too long, it means number is too long, just truncate the number
347
347
if expI >= 12 || expI < 0 {
348
348
expI = 10
349
- afterDecimal = dec .atoi32 (start , start + expI - 2 )
349
+ afterDecimal = dec .atoi64 (start , start + expI - 2 )
350
350
} else {
351
- afterDecimal = dec .atoi32 (start , end )
351
+ afterDecimal = dec .atoi64 (start , end )
352
352
}
353
353
dec .cursor = i + 1
354
354
pow := pow10uint64 [expI ]
@@ -377,23 +377,23 @@ func (dec *Decoder) getFloat32() (float32, error) {
377
377
}
378
378
// then we add both integers
379
379
// then we divide the number by the power found
380
- var afterDecimal int32
380
+ var afterDecimal int64
381
381
expI := end - start + 2
382
382
// if exp is too long, it means number is too long, just truncate the number
383
383
if expI >= 12 || expI < 0 {
384
384
expI = 10
385
- afterDecimal = dec .atoi32 (start , start + expI - 2 )
385
+ afterDecimal = dec .atoi64 (start , start + expI - 2 )
386
386
} else {
387
387
// then we add both integers
388
388
// then we divide the number by the power found
389
- afterDecimal = dec .atoi32 (start , end )
389
+ afterDecimal = dec .atoi64 (start , end )
390
390
}
391
391
pow := pow10uint64 [expI ]
392
392
return float32 (beforeDecimal + afterDecimal ) / float32 (pow ), nil
393
393
case 'e' , 'E' :
394
394
dec .cursor = j + 1
395
395
// we get part before decimal as integer
396
- beforeDecimal := uint32 ( dec .atoi32 (start , end ) )
396
+ beforeDecimal := dec .atoi64 (start , end )
397
397
// get exponent
398
398
exp , err := dec .getExponent ()
399
399
if err != nil {
@@ -410,12 +410,12 @@ func (dec *Decoder) getFloat32() (float32, error) {
410
410
return float32 (beforeDecimal ) * float32 (pow10uint64 [pExp ]), nil
411
411
case ' ' , '\n' , '\t' , '\r' , ',' , '}' , ']' : // does not have decimal
412
412
dec .cursor = j
413
- return float32 (dec .atoi32 (start , end )), nil
413
+ return float32 (dec .atoi64 (start , end )), nil
414
414
}
415
415
// invalid json we expect numbers, dot (single one), comma, or spaces
416
416
return 0 , dec .raiseInvalidJSONErr (dec .cursor )
417
417
}
418
- return float32 (dec .atoi32 (start , end )), nil
418
+ return float32 (dec .atoi64 (start , end )), nil
419
419
}
420
420
421
421
// Add Values functions
0 commit comments