当前位置: 首页 > news >正文

go封装将所有数字类型转浮点型,可设置保留几位小数

封装转换方法

/*
*
* 将类型转浮点型,并保留小数
ToFloat(123, 2)
ToFloat(3.5254, 0)
*/
func ToFloat(value interface{}, precision int) (float64, error) {var f float64var err errorswitch v := value.(type) {case float64:f = vcase float32:f = float64(v)case int:f = float64(v)case int32:f = float64(v)case int64:f = float64(v)case uint:f = float64(v)case uint64:f = float64(v)case string:f, err = strconv.ParseFloat(v, 64)if err != nil {return 0, fmt.Errorf("无法将字符串转换为浮点数: %v", err)}case bool:if v {f = 1} else {f = 0}default:return 0, fmt.Errorf("不支持的类型: %T", v)}// 处理精度if precision >= 0 {shift := math.Pow(10, float64(precision))f = math.Round(f*shift) / shift}return f, nil
}

使用

if m["state"] != nil && m["state"] != "" {state, _ := ToFloat(m["state"], 0)if state == 1 {where = fmt.Sprintf("%s and b.status='%s'", where, "1")}if state == 2 {where = fmt.Sprintf("%s and b.status='%s'", where, "2")}
}

使用

package mainimport ("fmt""utils"
)func main() {// 示例 1: 转换整数并保留2位小数result, _ := utils.ToFloat(123, 2)fmt.Println(result) // 输出: 123.00// 示例 2: 转换字符串并保留3位小数result, _ = utils.ToFloat("3.14159", 3)fmt.Println(result) // 输出: 3.142 (四舍五入)// 示例 3: 转换布尔值result, _ = utils.ToFloat(true, 0)fmt.Println(result) // 输出: 1// 示例 4: 转换失败时返回默认值result = utils.ToFloatWithDefault("abc", 2, 0.0)fmt.Println(result) // 输出: 0
}

封装

package taskimport ("fmt""math""strconv"
)/*
将类型转浮点型,并保留小数
ToFloat(123, 2)
ToFloat(3.5254, 0)
*/
func ToFloat(value interface{}, precision int) (float64, error) {var f float64var err errorswitch v := value.(type) {case float64:f = vcase float32:f = float64(v)case int:f = float64(v)case int32:f = float64(v)case int64:f = float64(v)case uint:f = float64(v)case uint64:f = float64(v)case string:f, err = strconv.ParseFloat(v, 64)if err != nil {return 0, fmt.Errorf("无法将字符串转换为浮点数: %v", err)}case bool:if v {f = 1} else {f = 0}default:return 0, fmt.Errorf("不支持的类型: %T", v)}// 处理精度if precision >= 0 {shift := math.Pow(10, float64(precision))f = math.Round(f*shift) / shift}return f, nil
}
http://www.dtcms.com/a/195463.html

相关文章:

  • STM32F407VET6的HAL库使用CRC校验的思路
  • YOLOv2目标检测算法:速度与精度的平衡之道
  • 能碳管理系统:助力企业实现“双碳“目标
  • 管理工具导入CSV文件,中文数据乱码的解决办法。(APP)
  • 项目思维vs产品思维
  • 交换机典型案例
  • P21-RNN-心脏病预测
  • RV1106G3的fastboot调试
  • UAI 2025重磅揭晓:录取数据公布(附往届数据)
  • 校园一卡通安全策略研究调研报告
  • 双流芯谷产业园:元宇宙枢纽的区位密码
  • AI日报 - 2024年5月16日
  • 问答数字人解决方案​
  • 【2025年软考中级】第一章1.5 输入输出技术(外设)
  • 科技型中小企业基本条件及与高新技术企业的区别
  • 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) 解题报告 | 珂学家
  • ReentrantLock类详解
  • 【笔记】cri-docker.service和containerd
  • 数学复习笔记 13
  • 全面且深度学习c++类和对象(上)
  • 多网卡管理实战指南:原理、问题分析与实用工具推荐
  • Vue3中实现轮播图
  • 轮询仲裁器
  • 【C语言字符函数和字符串函数(一)】--字符分类函数,字符转换函数,strlen,strcpy,strcat函数的使用和模拟实现
  • Vue 2.0学习
  • ch10 课堂参考代码
  • 什么是直播美颜SDK?美颜技术底层算法科普
  • MAX6749KA-T硬件看门狗调试
  • uv python 卸载
  • 深入理解 this 指向与作用域解析