Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java int强制转换到浮点强制转换到int并不等于原始int。

Java int强制转换到浮点强制转换到int并不等于原始int。
EN

Stack Overflow用户
提问于 2022-09-27 09:05:00
回答 2查看 128关注 0票数 1

使用这个片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static void main(String[] args){
        int i = XXX;
        System.out.println( (int) ( (float) i ) );
    }

如果是int i = 1234;,那么输出是1234

如果是int i = Integer.MAX_VALUE;,则输出等于Integer.MAX_VALUE

但是,如果是int i = 1234567990;,则输出是1234567936,它不等于i

如果是int i = 1235567990;,那么输出就是1235568000,这也不等于i

这个铸造转换数学是如何工作的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-27 09:15:27

对于浮点数学来说,这是完全正常的。intfloat都是32位值.float只有大约7位的精确性,因为它使用了一些比例尺。当您得到大值时,“相邻”float值(即从一个精确地表示值到下一个值向上)相隔超过1,因此这两个相邻值之间的任何整数都不能精确地表示为float

另一种看待这个问题的方法是针孔原理的一个版本

  • floatint都有2^32种可能的位模式。
  • 从每个int到一个float值都有一个有效的映射
  • 每个位模式都是一个有效的int,因此有2^32个可能的整数值。
  • float还包含值1.5 (以及许多其他非整数,但我们只需要其中一个来证明这一点)。
  • 因此,至少两个int值必须映射到同一个float,这意味着映射不可能在每种情况下都是可逆的。

请注意,如果使用double,就可以将每个int转换为double,然后再转换为int,然后得到原始值。但是,使用doublelong (而不是int)会遇到相同的问题,原因相同,但使用64位而不是32位。

票数 12
EN

Stack Overflow用户

发布于 2022-09-27 09:21:40

这个铸造转换数学是如何工作的?

int转换为float的工作方式与任何浮点操作的工作方式相同:做数学运算(在本例中为零--只需将int转换为整数),然后将其转换为“最近可表示的浮点数”,该浮点数比任何其他浮点数更接近计算结果。

为什么是“有损”?看另一个答案。

浮动的可表示性的数学基础是什么?维基百科关于IEEE754浮点表示的页面解释了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73871349

复制
相关文章
asp.net中显示DataGrid控件列序号的几种方法
在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通过它所带的一些参数来间接得到序号,下面来看看怎样得到和显示序号值计算方式如下:
Java架构师必看
2021/03/22
1.6K0
PHP错误提示open_basedir restriction in effect的解决方案
前几天收到一个网友反馈,出现了一个错误提示“open_basedir restriction in effect. File(/opt/rasp_php70/logs/alarm/alarm.log.2022-01-01) is not within the allowed path(s)”,看过之后一头雾水,没遇到过,今天做zblog搜索伪静态的时候突然想起来这个错误了,是的,十天了,我才想起来,没办法啊记性不好。百度了一下,应该是宝塔“防跨站攻击(open_basedir)”引起的错误,一般来说是Apache环境引起的。
李洋博客
2022/01/18
8.6K0
PHP错误提示open_basedir restriction in effect的解决方案
随机日志:两列显示
  看到别人的随机日志都是现实两列,我这一直显示一列,一是因为显示一列不好看,二是提供的信息量太低。因此改成两列还是很有必要的,于是自己写了些css样式,添加到主题的style.css文件的最下面。
the5fire
2019/02/28
9690
点击显示错误
双折线点击一个,另一显示a b 错误.PNG 正确.PNG 隐藏一条线 tooltip: { // 气泡 trigger: "axis"
用户4344670
2019/08/28
1.2K0
点击显示错误
在Ubuntu中配置ASP.NET站点
mono是.NET在Linux等非Windows平台上的第三方实现,借助它就可以实现.NET的跨平台应用。虽然mono还不能支持所有的.NET应用,但对于普通的小型程序,mono已经足够胜任了。更让人鼓舞的是当前最为流行的桌面Linux系统Ubuntu已经集成了mono的运行环境,只要手上有一个.net应用程序,拷贝到Ubuntu中,然后就可以运行了。实际上,在Ubuntu中,已经有一些应用程序是用C#完成的,例如附件中的便签程序Tomboy就是用C#写的,打开Tomboy的文件目录,就会发现很多在Windows中常见的dll程序集,所以,跨平台也不是不可以的。
用户1685462
2021/07/28
1.7K0
Ext根据条件显示隐藏列
  写在ExtonReady函数里面,并在表格成功渲染之后,可以添加判断是否隐藏或者显示某一列
河岸飞流
2019/08/09
2.7K0
IIS发布站点错误收集
转载:http://www.cnblogs.com/hangwei/p/4249406.html
跟着阿笨一起玩NET
2018/09/20
1.6K0
IIS发布站点错误收集
FineUI Grid 缓存列显示隐藏状态
当列表字段过多时,需要隐藏掉一些,但是再次打开页面又显示出来了,FineUI没有提供缓存功能,那么自己动手,打开【ext-part2.js】找到
冰封一夏
2019/09/11
8150
「R」显示英文错误
中文使用 R 经常看到各种乱码文字,让人看不懂意思,特别是在 Windows 系统上。
王诗翔呀
2020/07/02
1.8K0
安装SSL检查提示“错误: 服务器缺少中间证书”
首先检测下证书是不是中间证书缺失,以下两个网站都可以检测。 https://www.ssllabs.com/ssltest/index.html https://www.myssl.cn/tools/
咻一咻
2020/05/29
4.2K0
调查显示编程语言 Ruby 在缓慢衰落,缺少爆发点
Ruby 虽然仍然是 Engine Yard 和 Heroku 等产品的核心,以及 Discourse、Homebrew 和 Vagrant 等项目背后的语言,但你知道吗?Ruby 的走势并不乐观。 Redmonk 近日针对 Ruby 的发展做了一些总结,在其最近的排名中,Ruby 位居第八,落后于 JavaScript、Python 和 PHP 等语言,但领先于 C、Swift 和 Go 。尽管排名不低,但第八名其实是 Ruby 在 redmonk 排名中排名最差的一次。自2012年以来,该语言的排名
企鹅号小编
2018/02/08
1.2K0
调查显示编程语言 Ruby 在缓慢衰落,缺少爆发点
出现“内部错误,无法显示”
This page contains the following errors: error on line 2 at column 6: XML declaration allowed only at the start of the document Below is a rendering of the page up to the first error. 提示信息是头部有错误,我登录后台查看我修改过的页面,然后找到home.php我看了十几分钟没有发现那里有错误~~ 莫非头部不能有空格? 去掉试试
苦咖啡
2018/05/07
3.2K0
linux python 中文显示错误
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 20-25: ordinal not in range(128)
py3study
2020/01/07
5.4K0
DataGridView 密码列(显示为*号)的设置
曾经为在DataGridView中设置密码列(显示为*号)而发愁,如何把Windows 窗体 DataGridView 的某一列的数据显示为“*”。
Java架构师必看
2021/03/22
2.3K0
gridview列 数字、货币和日期 显示格式
在设置gridview等数据绑定控件的模版列时,总要设置显示的格式,这里是我查询一些资料后统计出来的。
Java架构师必看
2021/03/22
1.3K0
如何设置Element表格显示或者隐藏列
Element 表格点击复选框显示或隐藏列,效果如下: 主要步骤: 一、渲染复选框 <el-checkbox-group v-model="checkboxVal"> <el-ch
tianyawhl
2020/10/14
6.1K0
Winforms Cefsharp应用通过Vs Installer安装,应用崩溃,缺少文件错误
          本文主要分析winforms cefsharp应用通过Vs Installer做成安装包后,安装程序后,启动程序导致应用崩溃,提示System.IO.FileNotFoundException
郑小超.
2022/12/21
9020
Element Table 动态生成列并且不同的列显示不同的样式
我们在使用表格控件时,经常需要动态生成表格的列,并且某些列要求特殊的样式(如右对齐)
tianyawhl
2020/02/25
5.3K0
在ASP.NET 2.0中建立站点导航层次
站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局。默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,从任何后端位置暴露这些信息。
Java架构师必看
2021/03/22
7.1K0
点击加载更多

相似问题

错误"open_basedir restriction in effect“

12

get_extra_restriction()缺少一个必需的位置参数:'related_alias‘错误django

210

NHIbernate: Restriction.In和Restriction.InG之间的区别

20

内部托管Nuget站点上缺少类型错误

13

Asp.net图多列显示错误数据

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文