정수 변경하기
10 나누기 2 는 5 나머지 0
5 나누기 2 는 2 나머지 1
2 나누기 2 는 1 나머지 0
1 나누기 2 는 0 나머지 1

제일 마지막에 나온 나머지 부터 위로 순서대로 나열 -> 1010

소수점 아래 수 변경하기
0.35 곱하기 2 는 0.7, 0.7 에서 정수 부분 0 을 뺌
0.7 곱하기 2 는 1.4, 1.4 에서 정수부분 1 을 뺌
0.4 곱하기 2 는 0.8, 0.8 에서 정수부분 0 을 뺌
0.8 곱하기 2 는 1.6, 1.6 에서 정수부분 1 을 뺌
0.6 곱하기 2 는 1.2, 1.2 에서 정수부분 1 을 뺌
0.2 곱하기 2 는 0.4, 0.4 에서 정수부분 0 을 뺌
0.4 곱하기 2 는 0.8, 0.8 에서 정수부분 0 을 뺌
0.8 곱하기 2 는 1.6, 1.6 에서 정수부분 1 을 뺌
0.6 곱하기 2 는 1.2, 1.2 에서 정수부분 1 을 뺌
0.2 곱하기 2 는 0.4, 0.4 에서 정수부분 0 을 뺌
0.4 곱하기 2 는 0.8, 0.8 에서 정수부분 0 을 뺌
0.8 곱하기 2 는 1.6, 1.6 에서 정수부분 1 을 뺌
................................
이후는 무한반복(2를 곱해서 나온수가 정수 1일경우 1을 뱉어내고 거기서 끝)
제일 위쪽부터 뺀 정수를 순서대로 나열 -> 0.010110011001100.....

소수점아래의 수는 이진수로 완벽하게 변경되지 않음

십진수 11.75 를 이진수로 변환
정수 변환
11 ÷ 2 = 5 나머지 1
5 ÷ 2 = 2 나머지 1
2 ÷ 2 = 1 나머지 0
1 ÷ 2 = 0 나머지 1
결과 : 1011(2진) = 11(10진)

소수점 아래 변환
0.75 × 2 = 1.50 => 1
0.50 × 2 = 1.00 => 1
결과 : 0.11(2진) => 0.75(10진)

11.75(10진) = 1011.11(2진)
by 뭔일이여 2009. 5. 13. 11:02

<?php
$string = floatVal(3300);
$float = 3000 * 1.1;
if($string === $float) {
    echo 'String '.$string.' 은 Float '.$float.' 와 같다';
} else {
    echo 'String '.$string.' 은 Float '.$float.' 와 다르다';
}
echo '<br />';
var_dump($string);
echo '<br />';
var_dump($float);
exit();
?>
////////////////결과값////////////////////
String 3300 은 Float 3300 와 다르다
float(3300)
float(3300)
///////////////////////////////////////////

<?php
$string = floatVal(5500);
$float = 5000 * 1.1;
if($string === $float) {
    echo 'String '.$string.' 은 Float '.$float.' 와 같다';
} else {
    echo 'String '.$string.' 은 Float '.$float.' 와 다르다';
}
echo '<br />';
var_dump($string);
echo '<br />';
var_dump($float);
exit();
?>
////////////////결과값////////////////////
String 5500 은 Float 5500 와 같다
float(5500)
float(5500)
///////////////////////////////////////////


위와같이 1.1에 3000을 곱하면 결과값은 같지만 비교연산을 해보면 다르다고 값이 나온다.
여러가지 방법으로 알아보니 이진연산을 하는 컴퓨터 프로그래밍이라서 그런것이라고 한다.
십진수의 소수점 아래 수는 완벽하게 이진수로 변경되지 않는다.
1.1을 이진수로 변환하면 1.000100010001... 이처럼 0001 이 반복된다.
그래서 곱하기를 하면 보이지는 않지만 미묘하게 다른 값이 나오는것이다.
근데 왜 3000을 곱하면 다르고 5000은 같을까? 제길...

꼼수로 해결을 하자면 소수점 자리만큼 10의 제곱을 곱한 후 계산하고 다시 곱한 수로 나누는 방법이 있다.
by 뭔일이여 2009. 5. 12. 17:28

1. Apache
1) Version 1.3.X
http://www.apache.org/dist/httpd/CHANGES_1.3
2006년 11월 15일자 최신버전은 1.3.37

2) Version 2.0.X
http://www.apache.org/dist/httpd/CHANGES_2.0
2006년 11월 15일자 최신버전은 2.0.59

3) Version 2.2.X
http://www.apache.org/dist/httpd/CHANGES_2.2
2006년 11월 15일자 최신버전은 2.2.3

2. Php
1) Version 4.X
http://www.php.net/ChangeLog-4.php
2006년 11월 15일자 최신버전은 4.4.4

2) Version 5.X
http://www.php.net/ChangeLog-5.php
2006년 11월 15일자 최신버전은 5.2.0

3. Mysql
1) Version 4.1.X
http://dev.mysql.com/doc/refman/4.1/en/news.html
2006년 11월 15일자 최신버전은 4.1.21

2) Version 5.0.X
http://dev.mysql.com/doc/refman/5.0/en/news.html
2006년 11월 15일자 최신버전은 5.0.26

3) Version 5.1.X
http://dev.mysql.com/doc/refman/5.1/en/news.html
2006년 11월 15일자 최신버전은 5.1.12

출처 - phpschool

by 뭔일이여 2007. 1. 16. 17:44
| 1 |