我有以下简单代码:

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,结果相同。

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

  1. python把object转换成int_python – Pandas:将dtype’object’转换为int

    我已经在Pandas中读取了一个SQL查询,并且这些值以dtype'object'形式出现,尽管它们是字符串,日期和整数.我能够将日期'对象'转换为Pandas datetime dtype,但是在尝 ...

  2. java byte转成int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  3. java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  4. java 秒转换日期_Java 将日期或秒数转换为日时分秒

    ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; / ...

  5. c语言uint赋值给int,如何在C#中将uint转换为int?

    假设您只想从一种类型中提取32位并将其原样转储到另一种类型中: uint asUint = unchecked((uint)myInt); int asInt = unchecked((int)myU ...

  6. c语言 map转换成字符串数组,JSON数组形式字符串转换为ListMapString,String的几种方法...

    json转map通用方法 这里提供一方法,可以当作工具类,只要json字符串没有问题,嵌套几层都可以. import net.sf.json.JSONArray; import net.sf.json ...

  7. C语言将CSR存储模式转为coo,将大型稀疏矩阵转换为COO时出错(Error converting large sparse matrix to COO)...

    将大型稀疏矩阵转换为COO时出错(Error converting large sparse matrix to COO) 我遇到了下面的问题,试图浏览两个大的CSR矩阵: /usr/lib/pyth ...

  8. java float转换int

    1.Java的简单类型及其封装器类 ⑴Java简单类型与封装类 我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了 ...

  9. java int转换float_java float转换int

    1.Java的简单类型及其封装器类 ⑴Java简单类型与封装类 我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了 ...

  10. C# ASP.NET 转换为int型的方法 很实用

    很多新手在搞c#或者.net开发的时候总会碰到一些小问题,如何知道字符能不能为int型  在这里我写了一个小的函数仅供大家参考: /// <summary>/// 判断是不是int型/// ...

最新文章

  1. 移动UI设计中的7种主要导航模式
  2. JavaMail学习之一-邮件传输协议
  3. getprop 与 dumpsys 命令
  4. VirtualBox 共享目录
  5. python3 递归函数的理解
  6. java集合类详细概述
  7. 汇编语言的准备知识--给初次接触汇编者 之三
  8. 2、Eternal框架-svn_有更新!
  9. python并发处理list数据_3种方式实现python多线程并发处理
  10. simpla是基于laravel5的php,一个基于laravel5.1的后台
  11. 苹果公布AirPods Pro维修费用:705元买一只,789买充电盒
  12. 【Elasticsearch】 es watcher 视频 笔记
  13. oracle表数据如何恢复,ORACLE如何恢复被delete的表数据
  14. 将一个js项目改造成vue项目
  15. memcache学习之c客户端
  16. java可以看懂php代码吗_同一段代码,在PHP里和Java里都能运行,输出结果相同,你能看懂其中的原理吗?...
  17. matlab中 dataset用法,dataset中shuffle()、repeat()、batch()用法
  18. 问题解决_系统识别不了内存
  19. 离群值是什么意思_ESD—检验离群值
  20. 架构测试:HAproxy实现负载均衡,前端为nginx+php,数据库实现读写分离和高可用...

热门文章

  1. java的iterator接口_java Iterator接口和LIstIterator接口分析_java_脚本之家
  2. 第一个python爬虫_Python爬虫01——第一个小爬虫
  3. 温州大学c语言作业布置的网站,老师APP上布置作业 三年级娃为刷排名半夜做题_央广网...
  4. mysql中char,varchar与text类型的区别和选用
  5. linux如何查看mysql是否启动
  6. 微信小程序入门一: 简 介、文本、事件、样式
  7. Makefile中自定义函数的调用
  8. 交叉编译和交叉调试环境搭建及使用
  9. 前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;
  10. 前端学习(3209):react中类中方法的this指向