<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPK.org &#187; Float</title>
	<atom:link href="http://www.phpk.org/archives/tag/float/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phpk.org</link>
	<description>PHP User Group</description>
	<lastBuildDate>Tue, 17 Jan 2012 17:17:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>PHP에서 BIGINT 표현하는 방법</title>
		<link>http://www.phpk.org/archives/270</link>
		<comments>http://www.phpk.org/archives/270#comments</comments>
		<pubDate>Thu, 18 Jun 2009 06:10:36 +0000</pubDate>
		<dc:creator>ooti</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[BIGINT]]></category>
		<category><![CDATA[Float]]></category>
		<category><![CDATA[sprintf]]></category>

		<guid isPermaLink="false">http://www.phpkorea.org/archives/270</guid>
		<description><![CDATA[MySQL 에는 BIGINT 형이 있습니다. BIGINT 의 값의 범위는 총 64비트로 Signed 인 경우 -9223372036854775808 에서 9223372036854775807 까지 이고, Unsiged 인 경우 0부터 18446744073709551615 까지 입니다. 반면 PHP의 INT 형은 값의 범위는 총 32비트로 –2147483647 부터 +2147483647 까지이며 Unsigned 인 경우 0부터 4294967295 까지 입니다. PHP 는 값이 INT 범위를 넘어서는 경우 변수를 Float 형으로 [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL 에는 BIGINT 형이 있습니다. BIGINT 의 값의 범위는 총 64비트로 Signed 인 경우    <br />-9223372036854775808 에서 9223372036854775807 까지 이고,     <br />Unsiged 인 경우 0부터 18446744073709551615 까지 입니다.</p>
<p>반면 PHP의 INT 형은 값의 범위는 총 32비트로 –2147483647 부터 +2147483647 까지이며 Unsigned 인 경우 0부터 4294967295 까지 입니다.</p>
<p>PHP 는 값이 INT 범위를 넘어서는 경우 변수를 Float 형으로 변경합니다.</p>
<pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb">
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  1: <span style="color: #0000ff">&lt;?</span>php
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  2:     $i = 2147483647 ;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  3:     <a style="color: #ffa500" href="http://www.php.net/var_dump">var_dump</a>($i);
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  4:
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  5:     $i = 2147483647 + 1 ;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  6:     <a style="color: #ffa500" href="http://www.php.net/var_dump">var_dump</a>($i);
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  7: <span style="color: #0000ff">?&gt;</span></pre>
</pre>
<p>결과</p>
<p><code>int(2147483647)<br />
  <br />float(2147483648)</code> </p>
<p>float 은 사실상 double 형이라고 볼 수 있기 때문에 BIGINT 와 같은 64비트의 값을 가질 수 있습니다.</p>
<p>문제는 일정 값 이상이 되면 아래와 같이 지수표현 법으로 출력됩니다.</p>
<pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb">
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  1: <span style="color: #0000ff">&lt;?</span>php
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  2:     $i = 5820061110073302;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  3:     <a style="color: #0000ff" href="http://www.php.net/echo">echo</a> $i;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  4: <span style="color: #0000ff">?&gt;</span></pre>
</pre>
<p>출력</p>
<p><code>5.8200611100733E+15</code> </p>
<p>간단하게 생각하면 INT 범위를 넘어가는 $i 를 문자열로 바꾸면 제대로 출력될 수도 있을 것 같습니다. 그러나 아쉽게도 그렇지 않습니다.</p>
<pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb">
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  1: <span style="color: #0000ff">&lt;?</span>php
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  2:     $i = 5820061110073302;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  3:     $str = &quot;<span style="color: #8b0000">$i</span>&quot;;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  4:     <a style="color: #0000ff" href="http://www.php.net/echo">echo</a> $str;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  5: <span style="color: #0000ff">?&gt;</span></pre>
</pre>
<p>마찬가지로 출력은 5.8200611100733E+15 입니다.</p>
<p>Float 형으로 저장된 BIGINT 값을 자수표현 법이 아닌 정수표현으로 출력하고 싶다면 아래와 같이 할 수 있습니다.</p>
<pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb">
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  1: <span style="color: #0000ff">&lt;?</span>php
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  2:     $i = 5820061110073302;
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  3:     $str = <a style="color: #ffa500" href="http://www.php.net/sprintf">sprintf</a>(&quot;<span style="color: #8b0000">%.0f</span>&quot;,$i);
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  4:     <a style="color: #ffa500" href="http://www.php.net/var_dump">var_dump</a>($str);
</pre>
<pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; background-color: #fbfbfb">  5: <span style="color: #0000ff">?&gt;</span></pre>
</pre>
<p>출력 결과</p>
<p><code>string(16) &quot;5820061110073302&quot;</code> </p>
<p>앞서 `간단히` 생각해 봤던 방법처럼 sprintf 이용해서 Float 형의 값을 String 을 변경하였고 우리가 원했던 값의 형태로 출력할 수 있게 되었습니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpk.org/archives/270/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.phpk.org/archives/tag/float/feed ) in 0.14176 seconds, on Feb 8th, 2012 at 8:09 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 8th, 2012 at 9:09 am UTC -->
