julia学习笔记(二)——基本数据类型

文章目录

  • 2 数据类型
    • 2.1 整数
    • 2.2 浮点数
    • 2.3 机器精度
    • 2.4 舍入模式
    • 2.5 数值字面量系数
    • 2.6 零和一的字面量

2 数据类型

2.1 整数

如果想要在julia中输入整数字面值。如下:

julia> 3+4
7

至于你的整数字面值默认是什么数据类型,这取决于目标系统是32位还是64位架构。查看字面值或变量的数据类型使用typeof()方法,如下:

julia> typeof(1)
Int64julia> typeof(124.4)
Float64

如果想要查看目标系统是32位还是64位架构,可以使用内置变量Sys.WORD_SIZE进行查看。

julia> Sys.WORD_SIZE
64

Julia定义了IntUInt类型,它们分别是系统有符号和无符号的原生整数类型的别名。

# 32 位系统:
julia> Int
Int32
julia> UInt
UInt32# 64 位系统:
julia> Int
Int64
julia> UInt
UInt64

如果你的数超过了32位表示的范围,但能用64位表示,那么无论是什么系统都可以用64位表示。

# 32 位或 64 位系统:
julia> typeof(3000000000)
Int64

那如何知道一个内置数据类型可以表示的范围呢?typemin和typemax可以查看它们能够表示的最小值和能够表示的最大值。

julia> (typemin(Int32),typemax(Int32))
(-2147483648, 2147483647)

一旦一个数超过了一个类型所能表示的最大值,则会出现环绕行为,这对于学过C++或者Java的应该都能理解。

julia> x = typemax(Int64)
9223372036854775807julia> x + 1
-9223372036854775808julia> x + 1 == typemin(Int64)
true

在进行一些大数值的计算时,防止环绕现象是十分有必要的,故我们推荐使用任意精度算术中的BigInt类型来作为替代。

如果一个数值溢出,可以采取以下的方式来解决这个错误。

julia> 10^19
-8446744073709551616julia> big(10)^19
10000000000000000000

2.2 浮点数

浮点数字面量以标准格式表示,必要时可以使用E-表示法

julia> 1.0
1.0julia> 1.
1.0julia> 0.5
0.5julia> .5
0.5julia> -1.23
-1.23julia> 1e10
1.0e10julia> 2.5e-4
0.00025

如果用e则为64位浮点数,如果用f则为32位浮点数。如:

julia> x = 0.5f0
0.5f0julia> typeof(x)
Float32julia> 2.5f-4
0.00025f0

如果想要将浮点64位数据转为浮点32位数据,则通过以下的方式可以解决这个问题。

julia> x = -1.5
-1.5julia> typeof(x)
Float64julia> x = Float32(x)
-1.5f0julia> typeof(x)
Float32

julia支持表示正负零,但我们都知道,数学中正负零都是零,没有区别。

julia> 0.0 == -0.0
truejulia> bitstring(0.0)
"0000000000000000000000000000000000000000000000000000000000000000"julia> bitstring(-0.0)
"1000000000000000000000000000000000000000000000000000000000000000"

julia也可以表示无穷大,具体如下表:

Float16Float32Float64名称描述
Inf16Inf32Inf正无穷一个大于所有有限浮点数的数
-Inf16-Inf32-Inf负无穷一个小于所有有限浮点数的数
NaN16NaN32NaN不是数(Not a Number)一个不和任何浮点值(包括自己)相等(==)的值

由于我的电脑是64位的,故如果我想使用无穷大,只需使用Inf变量即可。如1除以正无穷应该是正无穷小:

julia> 1/Inf
0.0

2.3 机器精度

大多数实数都无法用浮点数准确表示,这是因为机器的精度有限。我们有必要知道两个相邻可表示的浮点数间的距离。他通常被叫做机器精度

Julia 提供了 eps 函数,它可以给出 1.0 与下一个 Julia 能表示的浮点数之间的差值。

对于eps函数来说,其传入的x就是下一个julia能表示的浮点数之间的差值。如:

julia> eps(Float32) #相当于1和2.0^23在机器中表示的差距 
1.1920929f-7julia> eps(Float64)
2.220446049250313e-16julia> eps() # 与 eps(Float64) 相同
2.220446049250313e-16

2.4 舍入模式

一个数如果没有精确的浮点表示,那么就必须被舍入到一个合适的可表示的值。舍入方式使用的是IEEE754标准。

2.5 数值字面量系数

为了让一些多项式表达和公式表达更为明了,julia允许变量直接跟在一个数字字面量后,如1x,这实际上为乘法关系1*x

julia> x = 3
3julia> 2x^2 - 3x + 1
10julia> 1.5x^2 - .5x + 1
13.0

需要注意的是,由于运算符有优先级,故我们建议打上括号。如:

# 2x^2实际上为2(x^2)
# 如果你想表示2x的2次方,建议写为(2x)^2
julia> x = 3
3julia> 2x^2
18julia> (2x)^2
36

括号表达式也可以位于变量前而不用写运算符,暗指乘法,如:

julia> x = 3
3julia> (x-1)x
6

但是括号表达式位于括号表达式前则必须写运算符。

julia> (x-1)(x+1)
ERROR: MethodError: objects of type Int64 are not callable
Maybe you forgot to use an operator such as *, ^, %, / etc. ?
Stacktrace:[1] top-level scope@ REPL[12]:1

2.6 零和一的字面量

julia也提供了0和1的字面量函数,可以返回特定类型或所给变量的类型。这些函数在数值比较中可以用来避免不必要的类型转换带来的开销。

julia> zero(Float32)
0.0f0julia> zero(1.0)
0.0julia> one(Int32)
1julia> one(BigFloat)
1.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信(支付宝)小程序蓝牙4.0线上项目

需求 : 微信(支付宝)小程序链接BLE4.0 ,发送指令到蓝牙硬件过程 : 小程序分为安卓和ios两套系统,支持连接BLE 蓝牙 ,其中会遇到机型问题(其中安卓,华为荣耀机型,小米,问题…

团队项目计划BACKLOG

团队名称: 铁大老司机 团队成员: 组长:杨超群 组员:杨涛 杜文星 张家军 计划会议过程: 我们小组在周三下午进行了团队会议,会议召开在图书馆大厅,主要内容是进行项目的总体计划安排&#xff0…

pyc文件

学习自:http://blog.csdn.net/sislcb/article/details/4002414 Python解释器:源代码-->字节码-->机器语言不同版本编译后的pyc文件是不同的python提供了内置库文件来实现将python编译成pyc文件。 import py_compile py_compile.compile(rH:/game/test.py) pyc…

C++从0到1的入门级教学(八)——通讯录管理系统

文章目录8 通讯录管理系统8.1 系统需求8.2 菜单功能8.3 退出功能8.4 添加联系人8.4.1 设计联系人结构体8.4.2 设计通讯录结构体8.4.3 main函数中创建通讯录8.4.4 封装添加联系人函数8.5 显示联系人8.5.1 封装显示联系人函数8.5.2 调用显示联系人函数8.6 删除联系人8.6.1 封装检…

【Data Cluster】真机环境下MySQL数据库集群搭建

真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介 MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing architecture)。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组…

【层次聚类】python scipy实现

层次聚类 原理 有一个讲得很清楚的博客:博客地址 主要用于:没有groundtruth,且不知道要分几类的情况 用scipy模块实现聚类 参考函数说明:pdistsquareformlinkagefcluster scipy.spatial.distance.pdist:计算点之间的距…

Find a girl friend

Find a girl friend Time Limit: 1000ms Memory limit: 262144K 有疑问?点这里^_^ 题目描述 CC wants to find a girl friend, he knows each girls age and name in his class, and each girl’s age is different.. Now he wants to know the youngest girls n…

数据结构杂谈(八)——树(上)

文章目录8 树(上)8.1 引入8.2 树的基础知识8.3 树的存储结构8.3.1 双亲表示法8.3.2 孩子表示法8.4 二叉树8.4.1 基础知识8.4.2 高频考点8.4.3 二叉树的性质8.4.4 二叉链表8.4.5 树和二叉树的转换8.4.6 森林和二叉树的转换8.5 遍历8 树(上) 8.1 引入 我们在前面的章节中一直在…

vs entityframwork Validation failed for one or more entities

问题:添加数据库一条数据时出错 查找异常 catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Trace.TraceInformation("P…

Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...

在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里我主要介绍一下我自己在使用Volley, Picasso, Universal-Imageloader的一些使用的感悟。以及最基本的用法介绍。1…

hdu 1754 I Hate It(分块做法)

题意:中文题,不多解释 思路:这个题原本用线段树很容易做,但分块其实也很容易,对于分块的复杂度还不是很会计算,只知道是每次分为sqrt(n)块,然后一共有sqrt(n&…

Maven(一)——快速上手Maven

文章目录Maven概述Maven简介Maven的安装Maven的基本使用IDEA配置Maven依赖管理依赖范围Maven概述 Maven是专门用于管理和构建Java项目的工具,它的主要功能有: (一)提供了一套标准化的项目结构 不同的IDE项目结构是不一样的&…

如何定制Activity的标题栏

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //自定义标题栏 mWindow getWindow(); mWindow.setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); titlebar.xml <?xml version"1.…

牛客网 牛客小白月赛1 H.写真がとどいています

H.写真がとどいています链接&#xff1a;https://www.nowcoder.com/acm/contest/85/H来源&#xff1a;牛客网这个题数乱了&#xff0c;导致wa了好几次。特别弱智&#xff0c;从A开始往上&#xff0c;就是A,B,C,D,E,F。A的下面就是G开始倒着&#xff0c;G,F,E。我智障&#xff0…

EntityFramework_MVC4中EF5 新手入门教程之三 ---3.排序、 筛选和分页

在前面的教程你实施了一套基本的 CRUD 操作&#xff0c;为Student实体的 web 页。在本教程中&#xff0c;您将添加排序、 筛选和分页到 StudentsIndex的功能。您还将创建一个页面&#xff0c;并简单分组。 下面的插图显示页面当你完成时的样子。列标题是链接&#xff0c;用户可…

eclipes快捷键

本文原创作者&#xff1a;pipi-changing 本文原创出处&#xff1a;http://www.cnblogs.com/pipi-changing/ Ctrl1 快速修复(最经典的快捷键,就不用多说了)CtrlD: 删除当前行 CtrlAlt↓ 复制当前行到下一行(复制增加)CtrlAlt↑ 复制当前行到上一行(复制增加)Alt↓ 当前行和下面一…

fluentd主从配置

fluentd是一个免费的、完全开源的日志管理工具&#xff0c;可以对日志进行收集、处理、存储。对于一些高流量的网站或者特殊的架构&#xff0c;需要fluentd高可用配置。 以下是在测试环境搭建模拟fluentd主从配置&#xff0c;模拟主从切换。 服务器 服务 192.168.199.1 elas…

Hadoop总结

目录 大数据概述 Hadoop大数据开发平台 资源管理YARN 分布式文件系统HDFS 非关系型数据库NOSQL 分布式数据库HBASE 批处理和MapReduce 数据仓库查询分析和Hive 基于内存计算的Spark 流计算和Flink 图计算和PREGEL Hadoop常用命令总结 大数据概述 大数据的4V&#x…

poj 2449

转自http://blog.csdn.net/sdj222555/article/details/7690081 题目大意就是给出一个图&#xff0c;然后给出一个起点个一个终点&#xff0c;求这两点间的第K短路。 本题中是可以走重复的路的&#xff0c;所以如果一张图中有一个环的话&#xff0c;无论求第几短路都是存在的。 …

CTS类型

类如果被封装&#xff0c;叫做密封类&#xff0c;密封类不能作为其他类的基类接口是抽象成员的集合&#xff0c;它在对象和对象用户间提供一个契约&#xff0c;CTS允许类实现任何数目的接口抽象类不能直接被创建&#xff0c;但可以用来为派生类型定义公共的行为&#xff0c;具体…