溢出行为

简介: 在 Julia 中,超出类型最大值的运算会引发环绕行为,如 `typemax(Int64)` 后加 1 结果变为 `typemin(Int64)`,显示了模算数特性。为了避免溢出错误,建议对最值边界进行检查或使用 BigInt 进行任意精度计算。例如,`10^19` 溢出,而 `big(10)^19` 则得到正确结果。

溢出行为

在 Julia 里,超出一个类型可表示的最大值会导致环绕 (wraparound) 行为:

实例
julia> x = typemax(Int64)
9223372036854775807

julia> x + 1
-9223372036854775808

julia> x + 1 == typemin(Int64)
true
因此,Julia 的整数算术实际上是模算数的一种形式,它反映了现代计算机实现底层算术的特点。在可能有溢出产生的程序中,对最值边界出现循环进行显式检查是必要的。否则,推荐使用任意精度算术中的 BigInt 类型作为替代。

下面是溢出行为的一个例子以及如何解决溢出:

实例
julia> 10^19
-8446744073709551616

julia> big(10)^19
10000000000000000000

相关文章
|
Java Android开发 数据格式
versionCode溢出的问题
android应用的版本主要由versionCode和versionName来决定,android系统是根据versionCode来验证新的apk是否能安装。如果已安装高版本的应用,就无法使用覆盖安装的方式来装旧的包   之前测试那边向我反馈的一个问题是:Android 5.0的机器,新增了多用户功能,如果安装新版本的应用然后删除掉,再装老版本的,理论上应该是可以装的(因为已经卸载过了),但实际仍可能遇到安装失败的情况,告知无法安装。
996 0
|
存储 安全 编译器
浅谈溢出问题
在c语言或是c++中有一类很典型的问题,那就是溢出。 如果说溢出对程序有什么危害的话,好像就是在编译的时候会报错,运行的时候会崩溃。但是当有了研究安全的人之后,安全性问题就会随之出现了。
浅谈溢出问题
|
数据库 SQL
关于 SqlDateTime 溢出
大家好,我是阿牛曾,IT人员一枚 第一次写博客,原因是动手解决了一个小Bug,虽然很小不过很有纪念意义,哈哈 出现错误: 提示 "SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间" 原因分析: 查阅了一些资料,原来在数据库中DateTime类型的字段最小值为1/1/1753 12:
1392 0
溢出行为
在 Julia 中,超出类型最大值的计算会导致环绕行为,如 `typemax(Int64)` 加 1 结果变为 `typemin(Int64)`,显示了模算术特性。为了避免溢出错误,需检查边界或使用 BigInt 进行任意精度运算。例如,`10^19` 溢出,而 `big(10)^19` 则正确计算为 `10000000000000000000`。
|
编译器
整数溢出机制 C
整数溢出机制 C
313 0
|
存储 编译器 C++
栈又溢出了
栈又溢出了
变量溢出引发的错误
在改动方面,其实对软件来说改动量不大,仅对下载的数据有一定调整,由于早期的程序用VB开发,倒是在哪里插入这段代码费了我不少时间
582 0
|
Java
Java内存溢出情况
在Java运行时数据区中,除了Program Counter Register(程序计数器)之外,其他几个数据区中均可能发生OutOfMemoryError,俗称OOM。
1216 0
|
Java
常见的java内存溢出情况
常见的java内存溢出情况
167 0