【问题标题】:How to round up and return an integer value?如何四舍五入并返回一个整数值?
【发布时间】:2014-04-29 12:21:00
【问题描述】:

我知道 Math.Round 和 Math.Ceiling 方法,但它们返回一个 Double 和一个 Decimal。 VB.NET 是否有任何内置函数总是将浮点数向上舍入,而不是向下舍入,返回类型为 Integer?我知道有 CInt,但如果它低于 6.5,则可以向下取整。

【问题讨论】:

  • 您始终可以使用CInt 来处理您从RoundCeiling 获得的信息。另外,我相信CInt 的舍入行为在 6.5 以上和以下都是一致的(一旦你已经四舍五入,这并不重要)。
  • 在四舍五入之前添加 0.5...
  • 您是说即使使用6.1 也要四舍五入?
  • @Asad - 所以没有单一的方法可以做到这一点?
  • 为什么不自己写。

标签: vb.net math built-in


【解决方案1】:

从 cmets 我了解到您想将 6.1 舍入为 7
只需加 1 并截断即可。
如果它看起来很尴尬,请为其创建一个方法。

更正:

除非数字已经被截断。

附录:

请注意,使用浮点数执行 == 并非没有问题;尝试 == 与浮点数时,您应该始终保持某种精度。
现在,当您决定了这个精度时 - 然后您可以重写代码以添加 0.999999(根据精度)并且第一个 add-0.9999-and-truncat 有效。

再次注意,添加 0.9999 并不意味着您将 0.9999 与我们的“正常”浮点数相加。
因此,如果您真的想添加 0.9999,则必须使用 BND 和/或一些货币算术。
在计算金钱(或任何精确的小数)时,你“总是”应该这样做

【讨论】:

  • 但这对 7.0 有什么影响?
  • @LutzL 更好的方法是添加 0.5 和四舍五入,正如 cmets 中有人指出的那样。
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多