.NET中的Math.Floor()Math.Truncate()什么区别?


#1楼

Math.Floor()符合IEEE标准754第4节“向负无穷大” Math.Floor()

Math.Truncate()Math.Truncate()入到最接近零的整数”。


#2楼

Math.Floor() :返回小于或等于指定的双精度浮点数的最大整数。

Math.Round() :将值舍入为最接近的整数或指定的小数位数。


#3楼

一些例子:

Round(1.5) = 2
Round(2.5) = 2
Round(1.5, MidpointRounding.AwayFromZero) = 2
Round(2.5, MidpointRounding.AwayFromZero) = 3
Round(1.55, 1) = 1.6
Round(1.65, 1) = 1.6
Round(1.55, 1, MidpointRounding.AwayFromZero) = 1.6
Round(1.65, 1, MidpointRounding.AwayFromZero) = 1.7Truncate(2.10) = 2
Truncate(2.00) = 2
Truncate(1.90) = 1
Truncate(1.80) = 1

#4楼

它们在功能上等同于正数。 不同之处在于它们如何处理负数。

例如:

Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2

MSDN链接: - Math.Floor方法 - Math.Truncate方法

PS小心Math.Round它可能不是你所期望的。

要获得“标准”舍入结果,请使用:

float myFloat = 4.5;
Console.WriteLine( Math.Round(myFloat) ); // writes 4
Console.WriteLine( Math.Round(myFloat, 0, MidpointRounding.AwayFromZero) ) //writes 5
Console.WriteLine( myFloat.ToString("F0") ); // writes 5

#5楼

Math.Floor向下Math.CeilingMath.Ceiling向上Math.FloorMath.Ceiling向下Math.Ceiling Math.Truncate为零。 因此, Math.Truncate就像Math.Floor为正数,和类似Math.Ceiling为负数。 这是参考 。

为了完整性, Math.Round入到最接近的整数。 如果数字正好位于两个整数之间,那么它将朝向偶数。 参考。

另见: Pax Diablo的回答 。 强烈推荐!


#6楼

math.floor()

返回小于或等于指定数字的最大整数。

MSDN system.math.floor

math.truncate()

计算数字的整数部分。

MSDN system.math.truncate

Math.Floor(2.56) = 2
Math.Floor(3.22) = 3
Math.Floor(-2.56) = -3
Math.Floor(-3.26) = -4Math.Truncate(2.56) = 2
Math.Truncate(2.00) = 2
Math.Truncate(1.20) = 1
Math.Truncate(-3.26) = -3
Math.Truncate(-3.96) = -3

另外Math.Round()

   Math.Round(1.6) = 2Math.Round(-8.56) = -9Math.Round(8.16) = 8Math.Round(8.50) = 8Math.Round(8.51) = 9

#7楼

左边是Math.floor sliiiide ...
Math.ceil sliiiide向右...
Math.truncate criiiiss crooooss(地板/ ceil始终朝向0)
Math.round cha cha,真正流畅...(转到最近的一侧)

我们去上班吧! (⌐□□_)

在左边...... Math.floor
把它收回你们现在... --
这次两次跳...... -=2

每个人都拍手✋✋

你有多低? 你可以低调吗? 一路到floor

if (this == "wrong")return "i don't wanna be right";

Math.truncate(x)也与int(x)相同。
通过删除正或负分数,您总是朝0。


#8楼

Mat.floor()将始终向下舍入,即。,它返回LESSER整数。 而round()将返回NEAREST整数


#9楼

请按照以下链接获取MSDN描述:

  • Math.Floor ,向下Math.Floor负无穷大。
  • Math.Ceiling ,向正无穷大四舍五入。
  • Math.Truncate ,向上或向下Math.Truncate为零。
  • Math.RoundMath.Round入到最接近的整数或指定的小数位数。 您可以指定行为,如果它在两种可能性之间完全等距,例如舍入使得最后一位数是偶数(“ Round(2.5,MidpointRounding.ToEven) ”变为2)或者它更远离零(“ Round(2.5,MidpointRounding.AwayFromZero) “成为3)。

以下图表和表格可能会有所帮助:

-3        -2        -1         0         1         2         3+--|------+---------+----|----+--|------+----|----+-------|-+a                     b       c           d            ea=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8======  ======  =====  =====  =====
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round (ToEven)           -3       0      0      2      3
Round (AwayFromZero)     -3      -1      0      2      3

请注意, Round比它看起来更强大,只是因为它可以舍入到特定的小数位数。 所有其他的总是小数点零。 例如:

n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven);       // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15

使用其他函数,您必须使用乘法/除法技巧来实现相同的效果:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15

#10楼

Math.Floor()向负无穷大Math.Floor()

Math.Truncate向上或向下Math.Truncate为零。

例如:

Math.Floor(-3.4)     = -4
Math.Truncate(-3.4)  = -3

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3

Math.Floor()和Math.Truncate()之间的区别相关推荐

  1. .NET中的Math.Floor()和Math.Truncate()什么区别?

    Math.Floor()符合IEEE标准754第4节"向负无穷大" Math.Floor() . Math.Truncate() " Math.Truncate()入到最 ...

  2. Math.ceil(),Math.floor()与Math.round()三个函数的定义。

    为什么80%的码农都做不了架构师?>>>    JavaScript: The Definitive Guide, 4th Edition中对Math.ceil(),Math.flo ...

  3. math.floor()和math.ceil()的使用

    math.floor()和math.ceil()的使用 math.floor是向下取整数: math.ceil是向上取整数:

  4. Math.Celing、Math.Floor、Math.DivRem与Math.BigMul

    返回大于或等于指定数字的最小整数.例如: double a=Math.Celing(0.00);  //0 double a=Math.Celing(0.40);  //1 double a=Math ...

  5. [前端技术]如何加深对JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解...

    首先还是看看<The Definitive Guide, 4th Edition>书中对三个函数的的定义. Math.ceil(x): round a number up Argument ...

  6. JavaScipt中的Math.ceil() 、Math.floor() 、Math.round()

    1. Math.ceil()用作向上取整. 2. Math.floor()用作向下取整. 3. Math.round() 我们数学中常用到的四舍五入取整. 转载于:https://www.cnblog ...

  7. math.floor java_Java Math.floor() 方法

    Java Math.floor() 方法 java.lang.Math.floor() 返回最大的(最接近正无穷大)double值,该值小于或等于参数,并等于某个整数. 1 语法 public sta ...

  8. Math.floor 和 Math.ceil

    Math.floor():舍去小数,仅取整数部分 Math.ceil(12.1)=12 Math.ceil(12.8)=12 Math.ceil(12.0)=12 123 Math.ceil():将小 ...

  9. Math.ceil与Math.floor与Math.round

    1.Math.ceil()  向上取整 //Math.ceil 向上取整double ceil1 = Math.ceil(12.13);//13.0double ceil2 = Math.ceil(1 ...

最新文章

  1. 低版本jdbc连接高版本oracle,转:oracle11g的JDBC连接 URL和之前的版本有一定的区别...
  2. [unity3d]水果忍者-界面搭建
  3. 设置mysql远程连接root权限
  4. vue-cli2.0创建项目步骤
  5. d3.js 简介和安装
  6. 聊聊身边的嵌入式,乘风破浪的比特币
  7. 剧情介绍:“我是山姆”
  8. 计算机网络习题集与习题解析 pdf,计算机网络习题集与答案.pdf
  9. There are 7 missing blocks. The following files may be corrupted
  10. SQL Server 备份还原教程
  11. Windows 10家庭版也能共享打印机(上)启用Guest账户
  12. Tina-TI——小巧好用又高效的原理图仿真软件
  13. 正确介绍自己的项目,终于不用害怕面试了
  14. 无法找到元素 'aop:aspectj-autoproxy' 的声明
  15. 提取OTU表格中分类学名称
  16. 【PR #2】史莱姆(值域分段)
  17. web前端开发薪资,JavaScript的字面量与变量
  18. uni-app中自定义图表(canvas实现chart图表)开发篇(1)-圆环带进度条
  19. pcf8563c语言程序,PCF8563实时时钟C源程序
  20. CSP-S 2019 第二轮 DAY2 简单解析(含部分分代码)

热门文章

  1. Ubuntu 显示隐藏文件
  2. Android Context 详解
  3. 算法--运算的最小翻转次数
  4. Ubuntu 修改截屏快捷键
  5. 第五周项目三-时间类(2)
  6. 数据量大mysql当月_mysql 1.5倍数据量导致20多倍的执行时间?
  7. python函数可选参数传递_Python中函数的参数传递
  8. 修改系统density适配
  9. C#从零单排上王者系列---元组
  10. 最大熵模型(Maximum Etropy)—— 熵,条件熵,联合熵,相对熵,互信息及其关系,最大熵模型。。...