Punta de Choros

27 декември 2009

На 2009г й оставаха 120ч съществуване. От календара падна поредния лист с дата 27 декември и към 10.30ч сутринта ме събуди звън от телефона.

Инсталация на Microsoft шрифтове в Ubuntu 16.04

14 януари 2017

нсталация на Microsoft шрифтове в Ubuntu се поражда от идеята браузърите в различните системи, да показват еднакво текстовото съдържанието на интернет страниците.

Ubuntu 16.04 инсталация на USB disk on Key

19 ноември 2016

Арсеналът ми от мобилни компютри съдържа Fujitsu Lifebook AH530. Това е бюджетна машина от 2011г на Intel Core i5-480M процесор и 4GB DDR3 RAM памет.

gparted

Paragon ExtFS for Windows

30 юли 2016

ExtFS for Windows е утилита на Paragon Software разработена през 2013г. Тя представлява решение, предоставящо пълен достъп на четене и на запис до раздели ...

msvcr100.dll is missing Windows 10

04 октомври 2016

Майк Патерсън от Plixer, компания по компютърната сигурност, публикува доклад , че Windows 10 изпраща данни в криптиран вид от вашата машина на всеки пет минути. Той е направил максимума, за да спре изтичането, но системата продължавала да изпраща информация.


Ако ви е осенила идея, да напишете криминален роман, но не знаете как да започнете останете тук. Прочетете до края и усвоеното може да ви послужи за джокер. Например, така. Името ми е Виктор. Аз съм микрохирург. Живея в Страната на чудесата на адрес ул. "Енисейская" дом 24. Съдбата ме срещна с човек, което ме направи слушател на Института по ориенталистика към Академията на науките на Узбекистан. Това ме завъртя на 180' и аз избрах синьото хапче ... и в този дух до края.

Следните математически примери ще бъдат главни герои на деня. Условно ги групирам по двойки.

0.6 - 0.5 = 0.1
0.5 - 0.4 = 0.1

0.3 - 0.2 = 0.1
0.2 - 0.1 = 0.1

Разлика на десетични дроби с един и същи резултат - 0.1, а като цяло подобни операции са много удобни за човешкото възприятие при финансови разчети. Нека извършим същите разчети в три програмни езика. Нещата се свеждат до присвояване резултата от всеки математически израз на съответна променлива, след което сравняваме променливите на равенство помежду им. Наша цел е какъв отговор получаваме.

Апроксимация в (My)SQL

Пример 1

set @a = 0.6-0.5, @b = 0.5-0.4;
SELECT @a AS a, @b AS b;
SELECT IF(@a=@b,'TRUE','FALSE') AS result;
резултат

Апроксимация в (My)SQL

Пример 2

set @a = 0.3-0.2, @b = 0.2-0.1;
SELECT @a AS a, @b AS b;
SELECT IF(@a=@b,'TRUE','FALSE') AS result;
резултат

Апроксимация в (My)SQL

И в двата случая MySQL върна TRUE. Както се казва - честито, булката е честна!

Апроксимация в PHP

Я да види дядо поп има ли в гърнето боб?

Пример 1

<?php
 $a = 0.6-0.5;
 $b = 0.5-0.4;
 
 //echo "\$a = $a \$b = $b";
 
 var_dump($a===$b);
резултат

Апроксимация в PHP

Добре, много добре ... отлично!

Пример 2

<?php
 $a = 0.3-0.2;
 $b = 0.2-0.1;
 
 //echo "\$a = $a \$b = $b";
 
 var_dump($a===$b);
резултат

Апроксимация в PHP

А, шах с пешката! Що така бе Миме?

Апроксимация в JavaScript

Как стоят нещата в този език?

Пример 1

<script type="text/javascript">
 var a;
 a = 0.6-0.5;
   
 var b;
 b = 0.5-0.4;

 (a===b)? document.write("TRUE") : document.write("FALSE")
</script>
резултат

Апроксимация в JavaScript

ОК, всичко е под контрол ...

Пример 2

<script type="text/javascript">
 var a;
 a = 0.3-0.2;
   
 var b;
 b = 0.2-0.1;

 (a===b)? document.write("TRUE") : document.write("FALSE")
</script>
резултат

Апроксимация в JavaScript

Бля! К'во става тука!?

Епилог

Апроксимация произхожда от латинската дума "approximo" и се превежда като приближение. В математиката означава замяна на сложни обекти с по-прости или с по-сходни към изходните. В примерите използвах естествени числа, чието представление разглежда стандарт IEEE-754, определящ двоичния им формат. За съжаление, формата на двоичното представление на реалните числа е ограничен, което позволява точно да изрази ограничено количество. Следва да се очаква, че представлението за останалите ще се явява някакво закръгление и ще породи проблеми подобни на резултат FALSE, където заради погрешност при окръгляване разликата между числа 0.3 и 0.2 не е равна на разликата между числа 0.2 и 0.1. И няма промяна ако оператор еквивалентност/идентичност (===) се промени на оператор равенство (==). По-важно е да се разбере, че този проблем не е нещо характерно за PHP или JavaScript, споделят го и други езици. Точността на окръгляване е напълно приемлива за голям брой случаи, но следва да се има едно на ум при опити за проверка на значенията на равенство.






до нови срещи   ^.^
11.05.2013 profruit 

0 Response to "Апроксимация в уеб-програмирането"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: Ubuntu, WEB, Photoshop, Фотография, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога