golang整数与小数间的加减乘除
我们假设你需要 整数与小数一起进行运算,或者 整数除以整数 得到小数这种运算
如果你使用了decimal, 那么之后所有的运算你都必须使用decimal,
因为通过它计算出来的结果的类型统统为decimal.Decimal,与float64和int无法一起运算。
使用过程如下:
- 首先你需要安装 decimal,
运行: go get github.com/shopspring/decimal
- 在运算开始前,设置你需要的精确的小数位数,自动四舍五入
decimal.DivisionPrecision = 2 // 保留两位小数,如有更多位,则进行四舍五入保留两位小数
加法 Add
2.1 + 3 float和int相加
var num1 float64 = 3.1
var num2 int = 2
d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(float64(num2)))
// 这里注意了,此时我们使用一个浮点数 加上 一个整数
// 这里num2 是整数,所以我们通过float64()将它强转为小数,然后进行计算即可,
// 如果两个都是小数则无需使用float64()
// 如果是两个整数也都无需使用float64(), 16/4=4, 16/5=3.2 他们的结果都是 decimal.Decimal 类型,可以通过reflect.TypeOf()方法进行测试,
减法 Sub,乘法 Mul, 除法 Div 用法均与上述类似,不再一一列举。
在计算完成后,返回的数据类型为decimal.Decimal,如你需要转换为常见的数据类型
比如,此时test的类型为decimal.Decimal,你需要将起转化为float64
test := decimal.NewFromFloat(16.25).Div(decimal.NewFromFloat(float64(8)))
// 通过Float64() 方法来实现
windLevel, _ := test.Float64()
// 类似的方法还有 String(), 总之decimal提供了很多实用的数据工具,大家需要计算时可以看看文档或者源码
// Round() 可以进行四舍五入
NewFromFloat(5.45).Round(1).String() // output: "5.5"
golang整数与小数间的加减乘除的更多相关文章
- bigdecimal解决小数间的加减乘除
public class bigdecimal { public static BigDecimal div(double v1,double v2){ BigDecimal b1=new BigDe ...
- Python 正则表达式:只要整数和小数
要求用户只能输入数字(包括整数和小数),如何用正则表达式验证用户输入? 有两种思路: 1. 给出正确格式的正则表达式,然后看输入是否合法. 2. 列出所有错误的输入,看输入是否非法. 对于思路1,想想 ...
- 【转】Java判断是否是整数,小数或实数的正则表达式
经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数. 网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2 ...
- SQL判断一个数是整数还是小数
DECLARE @number1 AS numeric(10,2),@number2 AS numeric(10,2) SELECT @number1=10.00,@number2=10.2 SELE ...
- EditText 限制输入整数和小数 的位数
如题,本文主要说的就是 如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...
- JAVA 把小数分成整数和小数
在进行进制转换的时候,我们需要把小数分为整数和小数两部分. 这里介绍两种方法. 第一种举个例子:1.23分为1 和 0.23 第二种:1.23 分为 1 和23 有时需要具体情况具体分析自己需要哪种类 ...
- python使用xlrd读取excel数据时,整数变小数的解决办法
python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...
- js 正则表达式 整数或小数
非零开头的整数或小数 /^[1-9][0-9]*([.][0-9]+)?$/ 非零开头的整数或两位小数 /^[1-9][0-9]*([.][0-9]{1,2})?$/ /^[1-9][0-9]*([. ...
- JS-正则表达式 限制输入整数、小数
//只可以输入整数 onkeyup="value=value.replace(/[^\d]/g,'')" //可以输入数字 包括小数 onkeyup="value=val ...
随机推荐
- windows进入指定目录
1.进入cmd 2.输入盘符比如:E: 3.切换目录 cd E:\progect\Firstdjango 实例:
- Core Data概述(转)
Core Data是一个模型层的技术.Core Data帮助你建立代表程序状态的模型层.Core Data也是一种持久化技术,它能将模型对象的状态持久化到磁盘,但它最重要的特点是:Core Data不 ...
- Cannon 60D 电池卡在电池槽了,拔不出来怎么办?
事情是这样的,本来好好的电池在电池槽里的,后来拿去充电了,充满后就准备装回去,然后一个不小心,电池掉地上了,就看了一下没摔爆,所以也没特别留意有没有什么地方摔坏摔瘸角,然后就往相机里塞,突然就发现塞不 ...
- tcp与串口透传(select)
介绍 tcp作为服务端,监听端口8888,实现串口透传,这里是使用select监听tcp的receive和串口的read,单工通信 -p 指定tcp端口 -s 指定串口 -b 指定波特率 支持4800 ...
- [转帖]IIS7配置Gzip压缩
IIS7配置Gzip压缩 https://www.cnblogs.com/coce/p/6804373.html II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问 ...
- 服务器做raid1后安装windows server 2012遇到的问题
问题: 在服务器上用2个300G的硬盘做了raid1之后,其他的盘做的raid5,安装windows server 2012的时候,到安装界面发现raid1的那个盘是600G,而且在这个磁盘上安装操作 ...
- Redis 学习笔记(篇十):Sentinel
Sentinel(哨兵)是 Redis 的高可用解决方案:由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主 ...
- 【IDEA插件】—— 代码量统计工具Statistic
1.下载 1.打开idea设置界面,选择 plugins标签 2.搜索“Statistic”插件,点击 install 3.重启IDEA 2.使用 1.菜单栏中找到view 2.在下层目录中找到Sta ...
- Python非递归实现二叉树的后续遍历
leetcode 145. Binary Tree Postorder Traversal 思路一: 使用一个栈stack保存经过的根结点,另一个栈flag保存每个结点的右子树是否遍历: 如果根结点存 ...
- (十二)springMvc 处理图片,视频等文件的上传
文章目录 导包 修改表单类型 配置解析器 处理上传的图片 补充一个自己写的工具类 导包 需要导入如下的包 commons-fileupload-1.3.3.jar commons-io-2.6.jar ...