c#语言float转换int,C#Float表达式:将结果float转换为int时的奇怪行为

我有以下简单代码:

int speed1 = (int)(6.2f * 10);

float tmp = 6.2f * 10;

int speed2 = (int)tmp;

speed1并且speed2应该具有相同的值,但实际上,我有:

speed1 = 61

speed2 = 62

我知道我可能应该使用Math.Round而不是强制转换,但是我想了解为什么值不同。

我查看了生成的字节码,但是除了存储和加载之外,操作码是相同的。

我也在Java中尝试了相同的代码,并且正确获得了62和62。

有人可以解释吗?

编辑: 在实际代码中,它不是直接6.2f * 10,而是函数调用*常量。我有以下字节码:

为speed1:

IL_01b3: ldloc.s V_8

IL_01b5: callvirt instance float32 myPackage.MyClass::getSpeed()

IL_01ba: ldc.r4 10.

IL_01bf: mul

IL_01c0: conv.i4

IL_01c1: stloc.s V_9

为speed2:

IL_01c3: ldloc.s V_8

IL_01c5: callvirt instance float32 myPackage.MyClass::getSpeed()

IL_01ca: ldc.r4 10.

IL_01cf: mul

IL_01d0: stloc.s V_10

IL_01d2: ldloc.s V_10

IL_01d4: conv.i4

IL_01d5: stloc.s V_11

我们可以看到操作数是浮点数,唯一的区别是stloc/ldloc。

至于虚拟机,我尝试使用Mono / Win7,Mono / MacOS和.NET / Windows,结果相同。

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

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

相关文章

前端小知识点(9):函数和对象之间的关系

目录 函数与对象之间的关系 代码演示 运行结果 函数与对象之间的关系 函数 有什么 : 函数也是对象 函数有:prototype 对象 有什么 对象:__proto__ 原型对象里面有什么:constructor 代码演示 //fun是一个函数&#xf…

【DICOMDIR专题】DICOMDIR基础知识及常见问题汇总

很多网友希望论坛能够出一些更专业、更细分的小专题,DICOMDIR就是目前需求量较大的专题之一。所以,结合网友所需,与几个关心此内容的朋友一起努力,做了一个小专题,希望对你有一些帮助~~DICOMDIR…

struct sockaddr_nl 结构体 由来、含义以及使用——获取Linux路由表

From: http://yangelc.blog.sohu.com/68245920.html Linux 用户态与内核态的交互 在 Linux 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的,例如iprote2网络管理工具,它与内核的交互就全部使用了…

Ubuntu 14.10 下运行进程实时监控pidstat命令详解

简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数…

Linux 给Qt应用软件创建图标启动

一、描述 Ubuntu源码编译安装Eclipse和Qt后,没有自动创建图标,每次启动需要进入到目录下运行脚本,比较麻烦。 可通过创建类似于windows系统的快捷方式进行快捷启动。 快捷方式一般以.desktop后缀命名,并保存到/usr/share/appli…

scheme解释器 C语言实现,使用Scala写了个简单的Scheme解释器

大家好,我使用scala实现了个简单的解释器,能够实现整数的加减乘除。我是照着快学 19章的 3 - 4 * 5 这个例子做的。思路也是按照它的来的。大概是这样 1)首先定义 factor是整数2)那么 term : ( factorfactor...) 就是一个完整的表达式了3) …

Android 的用户层 uevent处理机制

From: http://blog.csdn.net/linphusen/article/details/5667647 摘录几篇android研发日志 1 http://blog.csdn.net/linweig/archive/2010/06/01/5640697.aspx Firmware 加载原理分析----分析的比较透彻,我在wifimod…

前端小知识点(10):原型链

目录 原型链 : 代码1 运行结果1 代码二 运行结果2 原型链 : 每一个对象都有一个原型(__proto__),这个原型还可以拥有自己的原型,形成最终的原型链。 查找一个对象特定的属性或者方法,我们先去当前对象中找&#xff…

PS/2键盘鼠标接口各针脚定义

PS/2键盘鼠标接口各针脚定义(附图)好像很长时间也没有把这个最不被人重视的硬件问题提出来了,今天!我们就来谈谈键盘、鼠标PS/2接头各针脚定义(图)。针脚序号颜色名称简称意义电平1绿(G)Keyboard DATADATA (D)数据负线高电平2ReservervedN/C未定义预留空…

用css写个三角形

样例&#xff1a; 代码&#xff1a; html: <div class"tips"> <span class"caret"></span> 我是一个tooltip </div>css: .tips {width: 200px;height: 50px;line-height: 50px;text-align: center;position: relative;margin: 20p…

Linux系统查看版本和位数

一、查看系统版本 lsb_release -a piraspberrypi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie 二、查看系统所有信息 uname -a piraspberrypi:~…

JVectorMap 实现中国地图

我借鉴的博客&#xff1a;http://dove19900520.iteye.com/blog/1880668 一、功能介绍  JVectorMap是一款jquery的地图插件&#xff0c;可以支持各个国家和具体到省份的地图。 二、下载地址 http://download.csdn.net/download/laoshanbizu/5488955 三、使用步骤 1、引用 <…

React开发(226):默认方法返回一个新的参数两个括号

<Form className{form-customer}><Form.Item style{{ width: 100% }}>{getFieldDecorator(needDeliverBackcode${row.code}, {})(<Checkbox onChange{(data) > this.handleCheck (data, row)}>是否回寄</Checkbox>)}</Form.Item></Form&g…

Linux 环境变量PATH设置和查看etc/profile和bashrc的区别

一、查看环境变量 echo $PATH echo有“显示、印出”的意思&#xff0c;而 PATH 前面加的 $ 表示后面接的是变量&#xff0c;所以会显示出目前的 PATH. PATH&#xff08;一定是大写&#xff09;这个变量的内容是由一堆目录所组成的&#xff0c;每个目录中间用冒号&#xff08;:&…

linux下 USB动态监测 hotplug事件监测

From: http://blog.csdn.net/qwyang/article/details/6425555 总体规划&#xff1a; 使用netlink接口向内核注册hotplug事件通知&#xff0c;获取事件通知后进行相关动作如&#xff08;Actionadd&#xff09;挂载或&#xff08;actionremove&#xff09;卸载&#xff0c;使用So…

android选择头像弹窗,Android App开发常用功能之用户头像选择-Go语言中文社区

前言现在的APP基本都有个人资料的填写&#xff0c;基本的都有头像的选择&#xff0c;支持拍照和从本地相册选择&#xff0c;剪切圆形头像的功能&#xff0c;现在用个小demo实现以下。下面看一下效果图上代码&#xff1a;主界面代码package com.example.androidpersonal_icon;im…

CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

用qt连接MySQL需要共享库 libqsqlmysql.so的驱动&#xff0c;路径在plugin/sqldrivers目录下&#xff0c;乍看已经可用了&#xff0c;其实不然。 用ldd命令分析一下&#xff0c;libmysqlclient_r.so.16 > not found ,后明显libmysqlclient_r.so.16 缺少另一个共享库&#xf…

linux dhcp 服务(转)

大多数的情况下Linux作为DHCP服务器而windows 95/98作为DHCP客户。Linux也可以作为DHCP客户&#xff0c;即你要安装dhcpcd rpm 软件包 &#xff0c;Linux作为DHCP服务器&#xff0c;只需要安装dhcpd rpm 包。一.DHCP服务器工作的前提条件为了使DHCP服务器为windows机器服务&…

java jdk1.8.0_221 安装步骤

一、下载jdk Oracle JDK下载 官网 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载jdk1.8.0_221. 需要注册账号登陆才能下载。 下载完成&#xff0c;双击jdk-8u221-windows-x64.exe&#xff0c;进行安装。 二、安装jdk 安装前…

gsoap使用心得!

From: http://www.cppblog.com/qiujian5628/archive/2008/06/19/54019.html 完整源码下载 最近换了个工作环境&#xff0c;现在在大望路这边上班&#xff0c;呵&#xff0c;刚上班接到的任务就是熟悉gsoap&#xff01;废话少说&#xff0c;现在开始gSoap学习&#xff01;gSOAP…