【发布时间】:2016-01-15 05:49:08
【问题描述】:
我试图在不使用round 或roundn 的情况下实现MatLab 中存在的round 函数。这只是作为面试的练习。我的思考过程是这样的:我知道我需要使用 floor 和 ceil 函数。我想在没有先了解基础知识的情况下让我不要跳入代码,所以这是我对原型的想法,函数 x = f(z, d),其中 z 是要四舍五入的数字,d 是位数.
【问题讨论】:
-
你有什么问题?
我试图在不使用round 或roundn 的情况下实现MatLab 中存在的round 函数。这只是作为面试的练习。我的思考过程是这样的:我知道我需要使用 floor 和 ceil 函数。我想在没有先了解基础知识的情况下让我不要跳入代码,所以这是我对原型的想法,函数 x = f(z, d),其中 z 是要四舍五入的数字,d 是位数.
【问题讨论】:
这类问题可以而且经常(有时可能过于频繁)通过一些巧妙的解决方案来解决。例如,可以通过将边际添加到数字然后使用 floor 来解决此问题。
function y = myround(x, n)
dec = (10^n);
y = floor(x*dec+0.5);
y = y/dec;
因此,如果n+1 位置的小数为 0.5 或更大,则第 n 位小数会加一。
编辑
这可以通过 2 参数 round 来完成。
round(123.456,2)
ans =
123.4600
【讨论】: