go中浮点型用法总结
示例
// 浮点型的用法
package main
import (
"fmt"
"unsafe"
)
func main() {
// 如果浮点数声明时未指定变量的类型
// 默认为 float64 类型
var n1 = 3.99
fmt.Printf("n1的值为 %g, 类型是 %T, 占 %d 个字节\n", n1, n1, unsafe.Sizeof(n1)) // n1的值为 3.99, 类型是 float64, 占 8 个字节
// 使用类型推导
n2 := 4.567
fmt.Printf("n2的值为 %g, 类型是 %T, 占 %d 个字节\n", n2, n2, unsafe.Sizeof(n2)) // n2的值为 4.567, 类型是 float64, 占 8 个字节
// 声明为 float32 类型
var n3 float32 = 1.6789
fmt.Printf("n3的值为 %g, 类型是 %T, 占 %d 个字节\n", n3, n3, unsafe.Sizeof(n3)) // n3的值为 1.6789, 类型是 float32, 占 4 个字节
// 在用Printf进行格式化输出时,最好用 %g或%G 进行
// 格式化输出,如果用 %f 的话可能会造成精度丢失导
// 致数据不准确
var f1 float32 = 1.2098
fmt.Println("f1 =", f1) // f1 = 1.2098
fmt.Printf("f1 = %f\n", f1) // f1 = 1.209800
fmt.Printf("f1 = %g\n", f1) // f1 = 1.2098
fmt.Printf("f1 = %G\n", f1) // f1 = 1.2098
fmt.Printf("f1 = %e\n", f1) // f1 = 1.209800e+00
fmt.Printf("f1 = %E\n", f1) // f1 = 1.209800E+00
// 负的浮点型
f2 := -35412378.431267890112
fmt.Printf("f2 = %f, %g, %G, %e, %E\n", f2, f2, f2, f2, f2) // f2 = -35412378.431268, -3.541237843126789e+07, -3.541237843126789E+07, -3.541238e+07, -3.541238E+07
// 使用float32类型时,有时尾数部分可能丢失,造成精度损失
// 所以在开发中最好使用float64类型来声明浮点型变量
var f3 float32 = 444.000068889955
var f4 float64 = 444.000068889955
fmt.Println("f3 =", f3, "f4 =", f4) // f3 = 444.00006 f4 = 444.000068889955
fmt.Printf("f3 = %f, %g, %G, %e, %E\n", f3, f3, f3, f3, f3) // f3 = 444.000061, 444.00006, 444.00006, 4.440001e+02, 4.440001E+02
fmt.Printf("f4 = %f, %g, %G, %e, %E\n", f4, f4, f4, f4, f4) // f4 = 444.000069, 444.000068889955, 444.000068889955, 4.440001e+02, 4.440001E+02
}
总结

go中浮点型用法总结的更多相关文章
- 单片机的C语言中位操作用法2
单片机的C语言中位操作用法 在对单处机进行编程的过程中,对位的操作是经常遇到的.C51对位的操控能力是非常强大 的.从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点. 这也 ...
- Python中print用法里面% ,"%s 和 % d" 代表的意思
Python 编程 里面% . "%s 和 % d" 代表的意思 %s,表示格化式一个对象为字符 %d,整数 "Hello, %s"%"zhang3& ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- ORACLE 中ROWNUM用法总结(转)
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- c#初学-多线程中lock用法的经典实例
本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被 ...
- .NET3.5中JSON用法以及封装JsonUtils工具类
.NET3.5中JSON用法以及封装JsonUtils工具类 我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...
- ORACLE 中ROWNUM用法总结!
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
随机推荐
- python常用函数 S
slice(int,int) 切片,可以为切片命名增加可读性. 例子: sorted(iterable, key) 排序,支持传入参数,例如通过itemgetter传入参数(itemgetter可以传 ...
- rabbitmq 结构体
amqp_basic_properties_t props; props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MOD ...
- Mongodb Capped Collection集合
MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...
- 内存中的Buffer和Cache的区别
Reference:https://time.geekbang.org/column/article/74633 磁盘是一个块设备,可以划分为不同的分区:在分区之上再创建文件系统,挂载到某个目录,之后 ...
- js image转canvas不显示
今天在项目开发中遇到了image转canvas不显示的问题,最后翻了不少资料才发现问题出现在图片加载上 如果你的代码是这样的,那么不显示的原因就是img没有加载完成 function convertI ...
- 【leetcode】543. Diameter of Binary Tree
题目如下: 解题思路:最长的周长一定是树中某一个节点(不一定是根节点)的左右子树中的两个叶子节点之间的距离,所以最简单的办法就是把树中所有节点的左右子树中最大的两个叶子节点之间的距离求出来,最终得到最 ...
- Halo(七)
@ControllerAdvice 对Controller进行"切面"环绕 结合方法型注解 @ExceptionHandler 用于捕获Controller中抛出的指定类型的异常, ...
- springBoot02- 配置文件读取测试
1.照例登陆http://start.spring.io/ ,改个项目名(Artifact),然后下载导入Eclipse 2. 项目结构如下, 在pom中添加web依赖(不添加,就找不到RestCon ...
- npm和webpack安装以及相关信息
一.npm初始化 在项目文件夹下执行npm init,根据提示回车或者填写信息.结果是生成packge.json文件. 根据json文件npm install会安装依赖,项目会看到有一个node_mo ...
- 【HDOJ6582】Path(最短路图,最小割)
题意: n,m<=1e4,c<=1e9 思路: #include<bits/stdc++.h> using namespace std; typedef long long l ...