File tree 1 file changed +4
-3
lines changed
1 file changed +4
-3
lines changed Original file line number Diff line number Diff line change @@ -591,16 +591,16 @@ impl BigDecimal {
591
591
return self . clone ( ) ;
592
592
}
593
593
594
- let mut number = bigint. to_i128 ( ) . unwrap ( ) ;
595
- if number < 0 {
594
+ let mut number = bigint. clone ( ) ;
595
+ if number < BigInt :: zero ( ) {
596
596
number = -number;
597
597
}
598
598
for _ in 0 ..( need_to_round_digits - 1 ) {
599
599
number /= 10 ;
600
600
}
601
601
let digit = number % 10 ;
602
602
603
- if digit <= 4 {
603
+ if digit <= BigInt :: from ( 4 ) {
604
604
self . with_scale ( round_digits)
605
605
} else if bigint. is_negative ( ) {
606
606
self . with_scale ( round_digits) - BigDecimal :: new ( BigInt :: from ( 1 ) , round_digits)
@@ -2590,6 +2590,7 @@ mod bigdecimal_tests {
2590
2590
( "1.449999999" , 1 , "1.4" ) ,
2591
2591
( "-9999.444455556666" , 10 , "-9999.4444555567" ) ,
2592
2592
( "-12345678987654321.123456789" , 8 , "-12345678987654321.12345679" ) ,
2593
+ ( "0.33333333333333333333333333333333333333333333333333333333333333333333333333333333333333" , 0 , "0" ) ,
2593
2594
] ;
2594
2595
for & ( x, digits, y) in test_cases. iter ( ) {
2595
2596
let a = BigDecimal :: from_str ( x) . unwrap ( ) ;
You can’t perform that action at this time.
0 commit comments