<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: Округление по модулю (обсуждение)]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8312&amp;type=atom" />
	<updated>2016-02-09T11:16:41Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=8312</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: Округление по модулю (обсуждение)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100956#p100956" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>with ({
	names: [&#039;round&#039;, &#039;floor&#039;, &#039;ceil&#039;],
	i: Number(),
	name: String()
}) {
	for (i = 0; i &lt; names.length; i++) {
		name = names[i];
		with ({method: Math[name]}) {
			Math[name] = function (value, modulo) {
				//if (modulo == void null) modulo = 1;
				if (modulo == void null) return method(value);
				return method(value / modulo) * modulo;
			}
		}
	}
}

Math.floor(5.1); // по-прежнему 5
Math.floor(5.1, 2); // 4
Math.floor(5.1, -1); // 6 -- modulo &lt; 0 меняет местами пол и потолок
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2016-02-09T11:16:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100956#p100956</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Округление по модулю (обсуждение)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=72229#p72229" />
			<content type="html"><![CDATA[<p>Без замечаний <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2013-05-17T19:19:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=72229#p72229</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Округление по модулю (обсуждение)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=72226#p72226" />
			<content type="html"><![CDATA[<p>Если не будет замечаний — публикуйте и в Коллекции (я не смотрел, не специалист по javascript).</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-05-17T15:02:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=72226#p72226</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: Округление по модулю (обсуждение)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=72205#p72205" />
			<content type="html"><![CDATA[<p>На страницах MDN есть <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/ceil#Example:_Decimal_adjustment">пример десятичного округления чисел по степеням 10</a>. Недавно на глаза попался фрагмент кода java, где реализовано округление по произвольному числу. Реализовал на javascript. Публикую, вдруг кому-то понадобится. </p><div class="codebox"><pre><code>

(function()
{
    var names = [&#039;floor&#039;, &#039;ceil&#039;, &#039;round&#039;];

    for (var i = 0; i &lt; names.length; i++) {
        var name = names[i];
        (function(name, method)
        {
            //Math[name] = 
            Math[name + &#039;Modulo&#039;] = 
            function(value, modulo)
            {
                return arguments.length &lt; 2 
                    ? method(value) 
                    : method(value / modulo) * modulo;
            };
        })(name, Math[name]);
    }
})();

// Floor
Math.floorModulo(5, 5); // 5
Math.floorModulo(6, 5); // 5
Math.floorModulo(7, 5); // 5
Math.floorModulo(8, 5); // 5
Math.floorModulo(9, 5); // 5
Math.floorModulo(10, 5); // 10

// Ceil
Math.ceilModulo(5, 5); // 5
Math.ceilModulo(6, 5); // 10
Math.ceilModulo(7, 5); // 10
Math.ceilModulo(8, 5); // 10
Math.ceilModulo(9, 5); // 10
Math.ceilModulo(10, 5); // 10

// Round
Math.roundModulo(5, 5); // 5
Math.roundModulo(6, 5); // 5
Math.roundModulo(7, 5); // 5
Math.roundModulo(8, 5); // 10
Math.roundModulo(9, 5); // 10
Math.roundModulo(10, 5); // 10

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-05-17T11:09:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=72205#p72205</id>
		</entry>
</feed>
