首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > 关于.NET中的整数除法
【标  题】:关于.NET中的整数除法
【关键字】:.NET
【来  源】:http://twodays.cnblogs.com/archive/2005/12/13/296311.html

关于.NET中的整数除法

今天看到群里面有人在问:

double tempf = 20 / 230; tempf = ??

有人回答: 0.086956521739130434782608695652174  这显然是用计算器算出来的。
但是在.NET中,结果是0.0

但是为什么呢?其实一点儿不奇怪,在.NET中,对整数除法定义如下:

  • 整数除法:
    int operator /(int x, int y);
    uint operator /(uint x, uint y);
    long operator /(long x, long y);
    ulong operator /(ulong x, ulong y);

如果右操作数的值为零,则引发 System.DivideByZeroException

除法将结果舍入到零,并且结果的绝对值是小于两个操作数的商的绝对值的最大可能整数。当两个操作数符号相同时,结果为零或正;当两个操作数符号相反时,结果为零或负。

如果左操作数为最小可表示 intlong 值,右操作数为 -1,则发生溢出。无论操作是在 checked 还是在 unchecked 上下文中发生,此时总是引发 System.OverflowException

所以,20/230得到的结果应该是0,0赋给一个double型的值,就变成了0.0了

 

呵呵,其实我们公司的面试题里面就有一道题是这样子的:

double expectedValue = 1/2; if ( expectedValue > 0 ) { expectedValue = expectedValue + 0.5; } Console.WriteLine(expectedValue);

问最终输出什么,相信大家经过我上面的解释应该可以得出正确的答案了。

Bridge? 一个GIS二次开发中常用的设计模式:【上一篇】
entlib2.0研究(五)--缓存组件的设计:【下一篇】
【相关文章】
  • 【蛙蛙推荐】.NET 2.0里使用强类型数据创建多层应用
  • 简单的使用.NET加密
  • .NET打包自动安装数据库
  • .NET/C# 2.0对于P/Invoke支持的几处增强
  • [ADO.NET]由数据库触发器引发的问题
  • 将asp.net1.1的应用程序升级到asp.net2.0的一点心得
  • 利用委托机制处理.NET中的异常
  • 广州.NET 俱乐部12月16日Party邀请
  • Security Guidelines: ASP.NET 2.0 [目录] & [How to列表]
  • [ASP.NET 2.0 Security FAQs]如何在membership中强制使用高安全性的密码
  • 【随机文章】
  • 安全体系的核心—HIDS
  • 用TRW2000破解EXESCOPE5.12
  • ESFramework 即将开源,请大家多提建议!(恳请dudu首页上放一天)
  • 全局变量的用法
  • personal FAQs
  • Windows XP “开始”菜单的组成
  • Dojo 0.3.1 的国际化支持
  • All Aboard! SE 完全破解实战(6)
  • 文档-模块设计报告
  • 最近学pb,最需要解决的两个问题
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.