<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Найти ближайшее меньшее/большее число к заданному]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11842&amp;type=atom" />
	<updated>2016-07-23T16:42:37Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=11842</id>
		<entry>
			<title type="html"><![CDATA[Re: Найти ближайшее меньшее/большее число к заданному]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106308#p106308" />
			<content type="html"><![CDATA[<p>Или можно просто в лоб через Loop, parse:<br /></p><div class="codebox"><pre><code>nums := &quot;5, 8, 365.45776, 346.45653, 573.4665356, 3, 364.4654565&quot;

MsgBox, % nearMin := getNearMinOrMax(nums, 353.56644, &quot;nearMin&quot;)
MsgBox, % nearMax := getNearMinOrMax(nums, 353.56644, &quot;nearMax&quot;)

getNearMinOrMax(numStr, num, modifier)  {
	Loop, parse, numStr, `,, %A_Space%
	{
		(modifier = &quot;nearMin&quot; &amp;&amp; A_LoopField &lt; num &amp;&amp; (near = &quot;&quot; || A_LoopField &gt; near) &amp;&amp; near := A_LoopField)
		(modifier = &quot;nearMax&quot; &amp;&amp; A_LoopField &gt; num &amp;&amp; (near = &quot;&quot; || A_LoopField &lt; near) &amp;&amp; near := A_LoopField)
	}
	Return near
}</code></pre></div><p>По производительности наверно это лучший вариант.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-07-23T16:42:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106308#p106308</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Найти ближайшее меньшее/большее число к заданному]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106307#p106307" />
			<content type="html"><![CDATA[<p><strong>Malcev</strong>, красиво, но можно короче:<br /></p><div class="codebox"><pre><code>var = 5, 8, 365.45776, 346.45653, 573.4665356, 3, 364.4654565
number = 353.56644

var .= &quot;,&quot; number
Sort, var, N D,
RegexMatch(var, &quot;([-\d\.]*),? ?\Q&quot; number &quot;\E,? ?([-\d\.]*)&quot;, match)
msgbox % &quot;min: &quot; match1 &quot;`nmax: &quot; match2</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-07-23T16:09:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106307#p106307</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Найти ближайшее меньшее/большее число к заданному]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106306#p106306" />
			<content type="html"><![CDATA[<p>Я так сделал.<br /></p><div class="codebox"><pre><code>
num = 353.56644
str = 5, 8, 365.45776, 346.45653, 573.4665356, 3, 364.4654565  

NextNum(str, num, less, more)
MsgBox % &quot;min: &quot; less &quot;`nmax: &quot; more

NextNum(str, num, ByRef less, ByRef more) {
    Sort, str, N D`, 
	Loop, Parse, str, `,, %A_Space%
	{
		if (A_LoopField &gt; num) &amp;&amp; (more := A_LoopField) != &quot;&quot;
			break
		less := A_LoopField
	} 
}
</code></pre></div><p><strong>Malcev</strong> в Regex ещё можно минуса добавить, мало ли, понадобятся отрицательные.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-07-23T16:04:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106306#p106306</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Найти ближайшее меньшее/большее число к заданному]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106305#p106305" />
			<content type="html"><![CDATA[<p>Можно так:<br /></p><div class="codebox"><pre><code>var = 5, 8, 365.45776, 346.45653, 573.4665356, 3, 364.4654565
number = 353.56644

var := RegexReplace(var, &quot; &quot;) &quot;,&quot; number
Sort, var, N U D,
RegexMatch(var, &quot;([\d\.]*),?\Q&quot; number &quot;\E,?([\d\.]*)&quot;, match)
msgbox % &quot;min: &quot; match1 &quot;`nmax: &quot; match2</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2016-07-23T15:41:24Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106305#p106305</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Найти ближайшее меньшее/большее число к заданному]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106304#p106304" />
			<content type="html"><![CDATA[<p>Здравствуйте.<br />Имеется ряд чисел, разделённых запятыми. В том числе и десятичные. Необходимо найти наиближайшее число из этого списка, большее/меньшее заданного.</p><p>Допустим: 5, 8, 365.45776, 346.45653, 573.4665356, 3, 364.4654565<br />Я задал 353.56644. Ближайшее большее 365.45776. Меньшее - 346.45653.</p><p>Как это проще всего сделать?</p>]]></content>
			<author>
				<name><![CDATA[Turambar]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33097</uri>
			</author>
			<updated>2016-07-23T14:36:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106304#p106304</id>
		</entry>
</feed>
