Отговорът на първия въпрос е в дубликата.
Отговорът на втория въпрос е:
Както Floats, така и Doubles нямат безкрайна точност. Можете удобно да мислите, че имат около 16 цифри точност. Всичко след това и ще имате грешки при закръгляване и отрязване.
Така че на 1.0e0 + 1e-38 ще липсва прецизност, за да направи каквото и да било, освен за край с 1.0e0 поради съкращаване на допълнителната точност.
Наистина, както и останалата част от отговора, това изисква разбиране как числата с плаваща запетая във формат IEEE всъщност се добавят в двоичен код. Основната идея е, че частта без знак и експонента на двоичното число с плаваща запетая се измества в единицата IEEE-754 на процесора (широка 80 бита на Intel, което означава, че винаги има отрязване в края на изчисление), за да представи неговото реално число. В десетичен знак това ще изглежда така:
Digit: 1 234567890123456
Value: 1.0000000000000000000000000000...0000
Value: 0.0000000000000000000000000000...0001
След като добавката бъде обработена, на практика е:
Digit: 1 234567890123456
Value: 1.0000000000000000000000000000...0001
И така, като се има предвид, че стойността се съкращава около 16-цифрения знак (в десетичен знак това са точно 22 двоични цифри в 32-битово плаващо число и 51 двоични цифри в 64-битово двойно, пренебрегвайки много важния факт, че водещото 1 е изместено (по отношение на експонента) и се предполага (ефективно компресиране на 23 двоични цифри в 22 за 32-битови и от 52 до 51 за 64-битови); това е много интересен момент, но трябва да прочетете по-подробни примери, като тук за тези подробности).
Съкратено:
Digit: 1 234567890123456
Value: 1.00000000000000000000
Обърнете внимание, че наистина малката десетична част е съкратена, като по този начин остава 1.
Ето една добра страница, която използвам винаги, когато имам проблеми с мисленето за действителното представяне в паметта: Десетичен към 32-битов формат IEEE-754. В сайта има връзки и за 64-битови, както и в обратна посока.
person
pickypg
schedule
02.05.2011
Имам този RadioSelect, където искам да добавя "допълнително" съдържание под моя етикет, като описание, нещо като help_text, но има няколко реда за всяка опция. Използвам приспособлението RadioSelect за моите радио бутони. Възможно ли е това или трябва да правя нещо друго тук? Ето моят код за моя radioselect...
Ето формата, който искам да постигна...
oЛекар
Кратко описание #1
Кратко описание #2
Кратко описание #3
o Рецепция
Още едно кратко описание №1
Още едно кратко описание №2
Още едно кратко описание #3
- person Ashwin Jayaprakash   schedule 03.05.2011