Julia系列2nd -数据类型
Julia主要用于科学计算,所以对于数据类型的支持是相当完备的…
有过编程开发经验的人,都知道编程语言都离不开整数和浮点数… 下面我们就从这两方面入手。
- typemin()可以查看数据类型的最小值
- typemax()可以查看数据类型的最大值
- bitstring()可以查看数的二进制表示
- typeof()可以查看任意对象的类型
1. 整数(和布尔)类型
Julia是支持无符号整数和有符号整数的…,在Julia中,布尔类型是可以和整型相互转化的。(Pythoner 哭晕在厕所里…)
类型 | 符号 | 比特位 | 最小值 | 最大值 |
---|---|---|---|---|
Int8 | 有 | 8 | -2^7 | 2^7-1 |
UInt8 | 无 | 8 | 0 | 2^8-1 |
Int16 | 有 | 16 | -2^15 | 2^15-1 |
UInt16 | 无 | 16 | 0 | 2^16-1 |
Int32 | 有 | 32 | -2^31 | 2^31-1 |
UInt32 | 无 | 32 | 0 | 2^32-1 |
Int64 | 有 | 64 | -2^63 | 2^63-1 |
UInt64 | 无 | 64 | 0 | 2^64-1 |
Int128 | 有 | 128 | -2^127 | 2^127-1 |
UInt128 | 无 | 128 | 0 | 2^128-1 |
Bool | – | 8 | false(0) | true(1) |
1.1 整数类型的特点
对于Julia的整数类型,我们需要考虑两个方面:
- 有无符号
- 位数
Julia在确定字面值的过程中:
符号上:十进制数自动确定为有符号整型,其他进制的数处理为无符号整数。
位数上:十进制数会默认选择与OS的位数保持一致,若数字过大,则会选择更大的位数;而对于其他进制的数,则依据值的大小选择恰当的位数。
根据需要,我们可以使用:
- unsigned() ----- 将有符号数转为无符号数,忽略负值检查;
- signed() -------- 将无符号数转为有符号数,忽略范围越界;
这两个函数在转换时会讲原值变成位数相同的无符号或有符号数。慎用!!!
1.2 进制问题
- 0x ---- 表示十六进制数
- 0b ---- 表示二进制数
- 0o ---- 表示八进制数
需要强调的是:这里的x,b,o只能是小写字母。
无符号整数会以十六进制的方式展示
1.3 布尔类型(bool)
不能将整型当作bool使用
2. 浮点类型
类型 | 精度 | 比特位 | 最小值 | 最大值 |
---|---|---|---|---|
Float16 | half(半精度) | 16 | -Inf16 | Inf16 |
Float32 | single(单精度) | 32 | -Inf32 | Inf32 |
Float64 | double(双精度) | 64 | -Inf | Inf |
浮点类型是按照所能表示的精度来划分的。
Float16基本上用不到,根据官方文档的说明,Float16是使用Float32进行模拟实现的。如何理解这句话呢?即就算我们遇到Float16的数值,其在内部运算时依然按照Float32进行。
2.1 精度及eps函数
我们知道计算机内部都是二进制的,逻辑判断非常简单(非0则1),但是在表达力方面还是有所欠缺的。浮点数在计算机中基本无法准确的表示。
机器精度:计算机中两个相邻可表示的浮点数之间的误差。
Julia 提供了eps()函数 帮助我们去查看1.0和下一个Julia能正确表示的浮点数之间的差值。更加详细的内容可以去REPL中的帮助模式中查看。
2.2 零及zero(),one()函数
在Julia中,浮点数中有两个零:正零(0.0)和负零(-0.0)
julia> 0.0 == -0.0
truejulia> bitstring(0.0)
"0000000000000000000000000000000000000000000000000000000000000000"julia> bitstring(-0.0)
"1000000000000000000000000000000000000000000000000000000000000000"
虽然两者相等,但是我们发现其在内存中的表示却不一样。这自己挖坑自己跳的节奏啊…
为了避免出现问题,Julia专门为我们提供了两个有趣的函数:
- zero(x): 生成x的0;
- one(x): 生成x的1;
2.3 特殊的浮点数
Float16 | Float32 | Float64 | 解释 | 描述 |
---|---|---|---|---|
Inf16 | Inf32 | Inf | 正无穷 | 大于该类型所能表达的所有有限浮点值 |
-Inf16 | -Inf32 | -Inf | 负无穷 | 小于该类型所能表达的所有有限浮点值 |
NaN16 | NaN32 | NaN | Not a Number | 不和任何浮点数(包括自己)相等 |
需要我们注意以下几点:
- 有了无穷的存在,Julia中的「浮点运算」就可以正常的除零操作(不推荐使用);
- 通过**isfinite(x)和isinf(x)**来判断是否是无穷;
- 通过**isnan(x)**来判断是否是NaN;
你会不会有Inf16 > Inf 的疑问呢?
julia> typemax(Float16) < typemax(Float64)
false
- 大数运算使用BigInt,BigFloat
Julia系列2nd -数据类型相关推荐
- 免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上)
本节我们开始讲python数据类型之bytes类型,我们分为上下两个章节. 你可以直接到这个页面观看本节视频:免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上) 以下为对应的 ...
- oracle number对应java什么类型_JVM系列之数据类型
码神手记--资深攻城狮的私房笔记.微信公众平台/知乎/头条/简书同步发文,关注.转发.收藏. 数据类型.类加载机制.JVM内存模型,很多人在面试中都会遇到这一类的问题.大部分人都是死记硬背,背完就忘. ...
- mysql decimal_MySQL系列之数据类型及约束
点击关注 不迷路 前言 上篇咱们介绍了MySQL的基本情况和建库建表语句,当然必不可少的增删改查中的增删改也一并介绍了一下,此处再次强调语句,删库需谨慎,三思而后行. 内容简介 本篇会分两部分介绍: ...
- julia系列1:介绍与安装
参考 https://zhuanlan.zhihu.com/p/41953244 还有这篇教程:https://zhuanlan.zhihu.com/p/60889456 详见julia中文文档:ht ...
- MySQL系列:数据类型、运算符及函数(5)
1. 数据类型 MySQL支持多种数据类型,主要有数值类型.日期/时间类型和字符串类型. (1)数值类型:包括整数类型:TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT, ...
- MySQL不同数据类型如何表示_MySQL系列(二)--数据类型
如何选择优化的数据类型: 当一个列有多种数据类型可以选择,选择顺序:数字类型.日期/二进制类型.字符类型,相同级别的数据类型,优先选择占用空间小的类型 1.通常更小的更好 相同级别的数据类型,选择占据 ...
- 88是python语言的整数类型_Python学习系列之数据类型(三)
一.Python中的数据类型 常用数据类型: 整数类型:int 浮点类型:float 布尔类型:bool(True,False) 字符串类型:str 1.整数类型: 英文未integer,简写为int ...
- 10.Redis系列之数据类型GeoSpatial
本文讲解redis中对经纬度操作支持的数据类型GeoSpatial 1. geoadd经纬度添加 我们打开https://lbs.amap.com/tools/picker进行坐标拾取,分别拾取静安区 ...
- julia系列8:交互界面
1. Interact 1.1 安装 using Pkg;Pkg.add("Interact");Pkg.build("Interact") using Web ...
最新文章
- 某女程序员吐槽自己被男同事集体排挤!一个人吃饭,一个人敲代码!深深感觉到世界的恶意!...
- nginx 带宽_Nginx优化配置,轻松应对十万并发
- mysql PHP注册代码_求分享简单的php注册+mysql数据库登录源码
- Arachni web扫描工具
- flink checkpoint 恢复_Flink断点恢复机制
- Android开发之SDK开发获取资源id报错的问题
- CNN分类,ResNet V1 ,ResNet V2,ResNeXt,DenseNet
- Simulink框图和S-函数
- Laravel源码解析之事件系统
- Bootstrap HTML 编码规范之字符编码
- 18.输入和输出函数
- 二叉树非递归程序c语言,二叉树非递归遍历C语言实现
- 利用UCSC Xena做TCGA数据库的生存曲线分析
- 用blockly制作诗词学习游戏
- JCMsuite应用:太阳能电池的抗反射惠更斯超表面模拟
- MemSQL性能测试结果
- 14-HBase的介绍、数据模型以及架构模型
- java 笔记本i7 i5_笔记本i5处理器和i7处理器哪个好
- 【Linux】服务远程连接失败解决方法
- HTML非遗文化网页设计题材【京剧文化】HTML+CSS(大美中国 14页 带bootstarp)
热门文章
- 【Android2 2及以上】如何允许你的应用移动到SD卡
- http是什么_作用以及报文详情_http的常见状态码
- Ettercap嗅探
- 假如有人欺骗了你•••
- 周鸿祎:360这个模式比较独特 全球就我们一家
- 一致性hash和普通hash区别?
- 【引语练习题】直接引语为疑问句转为间接引语时注意
- java界面设计器_java 图形界面设计制作计算器
- python中strftime函数_Python strftime()用法及代码示例
- MATLAB生成伯努利图分布,C++ - 随机生成器 伯努利分布(bernoulli distribution) 的 详解 及 代码...