Skip to main content

cast_wd/
int.rs

1//! 类型转换为数字
2//! author:wangdong
3//! time:2020-09-30 14:13:56
4
5use 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}