今天在写UnitTest时发现有个测试死活通不过。
其中语句的关键代码是这样的:
float scale = 0.24f;
int actualWidth = 800;
int width = (int)(actualWidth * scale);
AssertEquals(192, width);

dotUnit报错, expected value 192, 191 was got.
但是如果这样写就对了。
float scale = 0.24f;
int actualWidth =  800;
float widthf = actualWidth * scale; // 这里是192.0
int width = (int)widthf; //这样就是192了。

最后改成了
int width = (int)(float)(actualWidth * scale);
搞定。

但是问题仍然存在,C#编译器(.Net runtime)对于这两种强制类型转换内部处理有何差异呢?
第一种强制类型转换的结果为什么不对?我还没有很明确的答案,有谁知道?

转载于:https://www.cnblogs.com/jonnyyu/archive/2005/07/20/196691.html

就差一点点-微妙的强制类型转换相关推荐

  1. 自动类型转换和强制类型转换

    自动类型转换: 在Java中,任何情况下,整数类型的字面值默认当成int类型处理 小容量可以自动转换成大容量,这种操作被称为自动类型转换 容量大小的定义: 容量大小不是指数据类型的字节数,而是指这个数 ...

  2. As与强制类型转换的区别以及Is运算符的使用

    前言: 开发人员经常需要将一个对象从一个类型转换成其他类型. 在c#中,类型转换按照转换方式分类分为了隐式转换和显式转换,按对象分类又分为了值类型转换和引用类型转换 CLR(参考:http://bai ...

  3. 重载new、delete和强制类型转换运算符()

    1.重载new和delete运算符 内存管理运算符new.new[].delete和delete[]也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就 ...

  4. C++中的向上类型转换和向下类型转换+四种强制类型转换

    转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分 ...

  5. 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]

    一.栈和托管堆 通用类型系统(CTS)区分两种基本类型:值类型和引用类型.它们之间的根本区别在于它们在内存中的存储方式..NET使用两种不同的物理内存块来存储数据-栈和托管堆.如下图所示:     值 ...

  6. 《你不知道的JavaScript》整理(六)——强制类型转换

    JavaScript中通常分为两种类型转换,"隐式强制类型转换"(implicit coercion)和"显式强制类型转换"(explicit coercion ...

  7. C++编程进阶4(C++中的强制类型转换运算符、不要返回自定义类内部成员的指针,引用和迭代器)

    十五.C++中的强制类型转换 C语言中的强制类型转换方式有两种 T i = (T)exp; T i = T(exp); 这两种方式没有差别,C++中也支持这两种方式,但是和C++中的强制类型转换运算符 ...

  8. static_cast与c风格的强制类型转换比较

    class A {int a; };class B {int b; };class C : public A {int c; };int main() {B b;C c;A* p1 = (A*) &a ...

  9. 初学python-字符串中引号的使用、input简介、强制类型转换、加减乘除简写、条件判断...

    一.字符串中单引号和双引号的使用: 1.字符串以英文单引号' '引用.eg:'Hello World' 2.若字符串中含有单引号,则以英文双引号" "引用.eg:"I'm ...

最新文章

  1. ASSERT(IsOpen());
  2. 图集cancelButtonIndex,发送通知简洁写法
  3. 将SAP Cloud for Customer Customer视图的Account ID配置出来
  4. 百度地图得到两地点(通过经纬度)的距离、 通过经纬度获取详细地址
  5. bootstrap-代码-内联代码
  6. java 面试什么是类_Java 面试题代码类收集
  7. index.dat文件剖析
  8. 【Spring】详解ContextLoaderListener和DispatcherServlet的区别
  9. 数据的格式化和处理(复习)
  10. smarty一维数组的引用
  11. 阿里java代码规范插件
  12. java开发实例大全_java编程实例大全100例
  13. 芯原的神经网络处理器IP获百余款人工智能芯片采用
  14. 传染病模型中作图与计算(matlab,数学模型)
  15. 职称计算机考试相当于几级,全国职称计算机考试与全国计算机等级考试有什么不同?...
  16. Sphinx PHP api全文检索的例子
  17. 如何使用python实现翻转英文句子的单词顺序
  18. 【JY】45天缩短到4天,突发性Fluent仿真任务怎么破?
  19. 机器学习中火爆的对抗学习是什么,有哪些应用?
  20. Linux网络开始收发包之前需要做的事情——创建ksoftirqd内核进程

热门文章

  1. 深入理解JavaScript系列(5):强大的原型和原型链
  2. 剑指 offer 树的子结构
  3. 云服务器系统重装为windows,并进行文件传输
  4. java ldap 连接池_使用Ldap连接池
  5. Python 程序打包 -- 使用pyinstaller
  6. 机器学习:线性回归I 最小二乘法
  7. erlang精要(17)-匿名函数多子句-多个激活函数实现
  8. 工业用微型计算机笔记(3)-存储单位与基本组成
  9. 799页!吴恩达深度学习笔记.PDF
  10. 【深度学习】绝了!分割mask生成动漫人脸!爆肝数周,从零搭建