Math.Round()——面试题小结

简介:

今天面试,碰到一道题,关于Math.Round();也许做应用做久了,脑子不怎么转了,呵呵。

之前竟然没用过这个方法,可能看到过,忘了。。。。。一时想不起来,只猜是四舍五入的,后来还是做错了。

题目大概是问Math.Round(11.5);和Math.Round(-11.5);返回值是多少?

MSDN对该方法的说明:http://msdn.microsoft.com/zh-cn/library/as4h66hd(v=VS.80).aspx

原来不是四舍五入这么简单,其实是四舍六入,但是五是很有讲究的。要是遇到五则取离前一位最近的偶数。比如,这条题目,11.5返回值就是12.0;-11.5返回值就是-12.0;

但是这里其实也不是这么简单:

看下面的例子:
Math.Round(3.44, 1); //Returns 3.4.
Math.Round(3.45, 1); //Returns 3.4.
Math.Round(3.46, 1); //Returns 3.5.

依照他的例子得到的是"五舍六入",我改变了一下数字得到的结果将完全改变。

Math.Round(3.445, 1); //Returns 3.4.
Math.Round(3.455, 1); //Returns 3.5.
Math.Round(3.465, 1); //Returns 3.5.

Math.Round(3.450, 1); //Returns 3.4.(补0是无效的)

Math.Round(3.4452, 2); //Returns 3.45.
Math.Round(3.4552, 2); //Returns 3.46.
Math.Round(3.4652, 2); //Returns 3.47.

——(例子来自博客园)

这里,其实是根据方法的行为遵循 IEEE 标准 754 的第 4 节。这种舍入有时称为就近舍入或银行家舍入;

有位仁兄总结的口诀是:四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一;

按照这样的口诀去做确实能验证以上的返回结果!




原文发布时间为:2011-03-11


本文作者:vinoYang


本文来自云栖社区合作伙伴CSDN博客,了解相关信息可以关注CSDN博客。

目录
相关文章
|
Ubuntu Shell 开发工具
Ubuntu 20.04 配置 zsh
Ubuntu 20.04 配置 zsh
1162 0
Ubuntu 20.04 配置 zsh
|
传感器 算法 机器人
基于 IMU 的位姿解算
解算 IMU 采样数据的过程与惯导解算技术原理有关,而提高定位精度的方法主要依赖于IMU自身精度的提高和算法改进。
2831 0
|
编解码 图形学 Android开发
|
算法 搜索推荐 Java
解析01背包问题及其在动态规划中的应用
解析01背包问题及其在动态规划中的应用
|
编译器 C++
C++程序中的常量
C++程序中的常量
352 0
|
安全 Dubbo 应用服务中间件
Sentinel 2.0 微服务零信任的探索与实践
Sentinel 2.0 微服务零信任的探索与实践
1088 96
|
机器学习/深度学习 自然语言处理 固态存储
卷积神经网络CNN入门篇——形成、演变及其应用和影响。
卷积神经网络最初是受到视觉系统的神经机制启发、针对二维形状的识别设计的一种生物物理模型,在平移情况下具有高度的不变形,在缩放和倾斜情况下也具有一定的不变形。这种生物物理模型集成了“感受野”的思想,可以看作一种特殊的多层感知器或者前馈神经网络,具有局部连接、权值共享的特点,其中大量神经元按照一定方式组织起来对视野中的交叠区域产生反应。
卷积神经网络CNN入门篇——形成、演变及其应用和影响。
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】mlptdenoise分解+FFT+HHT组合算法
【MATLAB】mlptdenoise分解+FFT+HHT组合算法
249 0
【MATLAB】mlptdenoise分解+FFT+HHT组合算法
|
算法 调度
转:贪心算法在文档管理系统中的优势、误区及应用
贪心算法是一种基于贪心策略的算法,其基本思想是在每一步选择中都采取当前最优的选择,以期望得到全局最优解。然而,贪心算法不一定能得到全局最优解,它可能在某些情况下陷入局部最优解,因此在应用中需要谨慎选择。
294 1

热门文章

最新文章