1use std::any::{Any};
6use std::str;
7
8#[macro_export]
9macro_rules! r#u8 {
10 ($item:expr) => {
11 $crate::int::to_f64($item) as u8
12 };
13}
14
15#[macro_export]
16macro_rules! r#u16 {
17 ($item:expr) => {
18 $crate::int::to_f64($item) as u16
19 };
20}
21
22#[macro_export]
23macro_rules! r#u32 {
24 ($item:expr) => {
25 $crate::int::to_f64($item) as u32
26 };
27}
28
29#[macro_export]
30macro_rules! r#u64 {
31 ($item:expr) => {
32 $crate::int::to_f64($item) as u64
33 };
34}
35
36#[macro_export]
37macro_rules! r#u128 {
38 ($item:expr) => {
39 $crate::int::to_f64($item) as u128
40 };
41}
42
43#[macro_export]
44macro_rules! r#i8 {
45 ($item:expr) => {
46 $crate::int::to_f64($item) as i8
47 };
48}
49
50#[macro_export]
51macro_rules! r#i16 {
52 ($item:expr) => {
53 $crate::int::to_f64($item) as i16
54 };
55}
56
57#[macro_export]
58macro_rules! r#i32 {
59 ($item:expr) => {
60 $crate::int::to_f64($item) as i32
61 };
62}
63
64#[macro_export]
65macro_rules! r#i64 {
66 ($item:expr) => {
67 $crate::int::to_f64($item) as i64
68 };
69}
70
71#[macro_export]
72macro_rules! r#i128 {
73 ($item:expr) => {
74 $crate::int::to_f64($item) as i128
75 };
76}
77
78#[macro_export]
79macro_rules! r#f32 {
80 ($item:expr) => {
81 $crate::int::to_f64($item) as f32
82 };
83}
84
85#[macro_export]
86macro_rules! r#f64 {
87 ($item:expr) => {
88 $crate::int::to_f64($item)
89 };
90}
91
92
93
94
95#[allow(dead_code)]
96pub fn to_f64(value:&dyn Any)->f64{
97 if let Some(v) = value.downcast_ref::<i8>(){
98 *v as f64
99 }else if let Some(v) = value.downcast_ref::<i16>(){
100 *v as f64
101 }else if let Some(v) = value.downcast_ref::<i32>(){
102 *v as f64
103 }else if let Some(v) = value.downcast_ref::<i64>(){
104 *v as f64
105 }else if let Some(v) = value.downcast_ref::<i128>(){
106 *v as f64
107 }else if let Some(v) = value.downcast_ref::<u8>(){
108 *v as f64
109 }else if let Some(v) = value.downcast_ref::<u16>(){
110 *v as f64
111 }else if let Some(v) = value.downcast_ref::<u32>(){
112 *v as f64
113 }else if let Some(v) = value.downcast_ref::<u64>(){
114 *v as f64
115 }else if let Some(v) = value.downcast_ref::<u128>(){
116 *v as f64
117 }else if let Some(v) = value.downcast_ref::<f32>(){
118 *v as f64
119 }else if let Some(v) = value.downcast_ref::<f64>(){
120 *v as f64
121 }else if let Some(v) = value.downcast_ref::<usize>(){
122 *v as f64
123 }else if let Some(v) = value.downcast_ref::<isize>(){
124 *v as f64
125 }else if let Some(v) = value.downcast_ref::<bool>(){
126 if *v {1.0}else{0.0}
127 }else if let Some(v) = value.downcast_ref::<String>(){
128 v.parse::<f64>().unwrap()
129 }else if let Some(v) = value.downcast_ref::<&str>(){
130 v.parse::<f64>().unwrap()
131 }else {
132 0.0
133 }
134}