File tree 2 files changed +10
-5
lines changed
2 files changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -19,13 +19,13 @@ use std::borrow::Cow;
19
19
use crate :: core:: JsonbItem ;
20
20
use crate :: core:: JsonbItemType ;
21
21
use crate :: error:: * ;
22
- use crate :: ExtensionValue ;
23
22
use crate :: extension:: Date ;
24
23
use crate :: extension:: Interval ;
25
24
use crate :: extension:: Timestamp ;
26
25
use crate :: number:: Decimal128 ;
27
26
use crate :: number:: Decimal256 ;
28
27
use crate :: number:: Number ;
28
+ use crate :: ExtensionValue ;
29
29
use crate :: RawJsonb ;
30
30
31
31
impl RawJsonb < ' _ > {
Original file line number Diff line number Diff line change @@ -53,8 +53,9 @@ pub struct Decimal256 {
53
53
54
54
impl Decimal256 {
55
55
pub fn to_float64 ( & self ) -> f64 {
56
- let div = 10_f64 . powi ( self . scale as i32 ) ;
57
- self . value . as_f64 ( ) / div
56
+ let _div = 10_f64 . powi ( self . scale as i32 ) ;
57
+ //self.value.to_f64().unwrap() / div
58
+ todo ! ( )
58
59
}
59
60
}
60
61
@@ -196,9 +197,13 @@ impl Number {
196
197
Ok ( Number :: Decimal128 ( neg_dec) )
197
198
}
198
199
Number :: Decimal256 ( v) => {
200
+ let ( neg_value, is_overflow) = v. value . overflowing_neg ( ) ;
201
+ if is_overflow {
202
+ return Err ( Error :: Message ( "Decimal256 overflow" . to_string ( ) ) ) ;
203
+ }
199
204
let neg_dec = Decimal256 {
200
205
scale : v. scale ,
201
- value : v . value * - 1 ,
206
+ value : neg_value ,
202
207
} ;
203
208
Ok ( Number :: Decimal256 ( neg_dec) )
204
209
}
@@ -521,7 +526,7 @@ impl Display for Number {
521
526
} else {
522
527
let pow_scale = i256:: from ( 10 ) . pow ( v. scale as u32 ) ;
523
528
// -1/10 = 0
524
- if v. value >= 0 {
529
+ if v. value >= i256 :: from ( 0 ) {
525
530
write ! (
526
531
f,
527
532
"{}.{:0>width$}" ,
You can’t perform that action at this time.
0 commit comments