go 简单封装数学运算包
前言
我们在编写程序时,经常会遇到一些高精度的数学运算,这时候使用简单的运算符会造成精度的缺失。
这里引用了这个第三方包 https://github.com/shopspring/decimal 做了下简单的封装
封装
package util
import (
"math/rand"
"github.com/shopspring/decimal"
)
// 判断一个数是否为双数
func IsDouble(num int) bool {
if num%2 == 0 {
return true
}
return false
}
func RandInt(min, max int) int {
if min >= max || min == 0 || max == 0 {
return min
}
return rand.Intn(max-min) + min
}
func Add(x, y float64) float64 {
ret, _ := decimal.NewFromFloat(x).Add(decimal.NewFromFloat(y)).Float64()
return ret
}
func Sub(x, y float64) float64 {
ret, _ := decimal.NewFromFloat(x).Sub(decimal.NewFromFloat(y)).Float64()
return ret
}
// 乘
func Mul(x, y float64) float64 {
ret, _ := decimal.NewFromFloat(x).Mul(decimal.NewFromFloat(y)).Float64()
return ret
}
// 除
func Div(x, y float64) float64 {
ret, _ := decimal.NewFromFloat(x).Div(decimal.NewFromFloat(y)).Float64()
return ret
}
func Equ(x, y float64) bool {
return decimal.NewFromFloat(x).Equal(decimal.NewFromFloat(y))
}
func LT(x, y float64) bool {
return decimal.NewFromFloat(x).LessThan(decimal.NewFromFloat(y))
}
func GT(x, y float64) bool {
return decimal.NewFromFloat(x).GreaterThan(decimal.NewFromFloat(y))
}
func ChangeXToFloat(x interface{}) {
}
使用
// 简单使用
sum = util.Add(12.23234234234, 23.2938472930234)
// 组合使用
assetsUSDT = util.Add(sum , util.Mul(sum , 42.23423000234))
go 简单封装数学运算包的更多相关文章
- css3 calc():css简单的数学运算-加减乘除
css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 10 ...
- Objective-C学习笔记(四)——OC实现最简单的数学运算
本篇帖子会实现使用OC的最简单的加减乘除运算.学习的知识点包含变量定义.运算方法,格式化输出等概念.主要学习主要的语法,事实上和C语言的语法还是比較相似的. 具体代码仅仅要写在main方法中即可了.具 ...
- 大爽Python入门教程 1-1 简单的数学运算
大爽Python入门公开课教案 点击查看教程总目录 1 使用pycharm建立我们的第一个项目 打开pycharm,点击菜单栏,File->New Project 在Location(项目地址) ...
- css简单的数学运算
calc()是css3的一个新增的属性, .box{border:1px solid #ddd; width:calc(100% - 100px); background:#9AC8EB;} 兼容 ...
- JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习 ...
- Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...
- 6.Python3标准库--数学运算
''' 作为一种通用的变成语言,Python经常用来解决数学问题.它包含一些用于管理整数和浮点数的内置类型,这很适合完成一般应用中可能出现的基本数学运算. 而标准库中包含一些用于满足更高级需求的模块. ...
- Unity3D中Mathf数学运算函数总结
引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...
- shell执行数学运算
整数: expr let $(()) $[] 浮点数: bc 1.使用expr ♦参与运算的成员和运算符之间必须有一个空格: ♦对于那些容易被shell错解的,在它们传入expr命令之前,需要使用sh ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
随机推荐
- Qt编写视频监控系统71-外网访问摄像头等设备(获取各种信息及拉流)
一.前言 最近遇到个需求是通过外网接入摄像机或者NVR,通用的做法是将视频流推流到服务器,然后拉取rtmp视频流,这样就多了服务器的要求,而且实现的功能有限比如不能直接用onvif协议对设备获取信息和 ...
- Qt开发经验小技巧91-100
数据库处理一般建议在主线程,如果非要在其他线程,务必记得打开数据库也要在那个线程,即在那个线程使用数据库就在那个线程打开,不能打开数据库在主线程,执行sql在子线程,很可能出问题. 新版的QTcpSe ...
- [转]BeanUtils.copyProperties使用总结以及注意事项
1.前言开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用了get.set方法,看着很臃肿,思考下肯定不只有我有这种想法,所以技术上肯定有方法能解决这个问题,所以查阅了一些资料发现了Bean ...
- [转]CopyPlugin Invalid Options options should be array ValidationError: CopyPlugin Invalid Options
这个错误是使用webpack的一个plugin出现的错误.这个plugin是copy-webpack-plugin我把文档的例子复制,然后就报了这个错误.文档的例子: const CopyPlugin ...
- JS-正则表达式(基本语法、test、exec、\d\D\w\W\s\S .)
二,正则表达式 1,什么是正则表达式 是一种规范,对字符串格式进行验证的规范 不用自己写,常用的正则表达式,网上都有,只要会使用就可以 2,定义方法 字面量 var reg = /正则表达式/ 常用方 ...
- LetsTalk_Android中引导用户加入白名单图
--------------------------------
- Windows环境配置Nginx服务实现负载均衡
系统环境:win10 测试服务:.net6.0+webapi 一.本地创建一个webapi项目 二.新建一个api控制器,里面编写一个测试方法 三.我直接把这一个项目复制了3份,然后修改控制器方法中的 ...
- 项目PMP之七项目成本管理
项目PMP之七--项目成本管理 一.定义:在预算内管理成本:预测项目成本 核心理念:重点关注项目活动的成本:同时决策的影响.相关方的不同时间不同方法的测算 趋势:挣值进度(ES)逻辑:敏捷的方式则 ...
- JavaScript操作addEventListener监听触发事件
JavaScript 的 addEventListener 方法允许你为指定的 HTML 元素添加事件监听器.以下是一些常见的事件类型,可以使用 addEventListener 来监听它们: 1,点 ...
- 路由协议过程概述--ospf-01
路由是数据通信网络中最基本的要素.路由信息就是指导报文发送的路径信息,路由的过程就是报文转发的过程. 根据路由目的地的不同,路由可划分为: 网段路由:目的地为网段,IPv4地址子网掩码长度小于32位或 ...