<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS: Округление по модулю (обсуждение)]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=8312</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8312&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS: Округление по модулю (обсуждение)».]]></description>
		<lastBuildDate>Tue, 09 Feb 2016 11:16:41 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JS: Округление по модулю (обсуждение)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100956#p100956</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 09 Feb 2016 11:16:41 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100956#p100956</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Округление по модулю (обсуждение)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=72229#p72229</link>
			<description><![CDATA[<p>Без замечаний <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Fri, 17 May 2013 19:19:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=72229#p72229</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Округление по модулю (обсуждение)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=72226#p72226</link>
			<description><![CDATA[<p>Если не будет замечаний — публикуйте и в Коллекции (я не смотрел, не специалист по javascript).</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 17 May 2013 15:02:14 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=72226#p72226</guid>
		</item>
		<item>
			<title><![CDATA[JS: Округление по модулю (обсуждение)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=72205#p72205</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 17 May 2013 11:09:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=72205#p72205</guid>
		</item>
	</channel>
</rss>
