Brat2 Ierakstīts Aprīlis 27, 2020 Share Ierakstīts Aprīlis 27, 2020 Seiki! Vai šeit ir kāds kurš man var nedaudz izpalīdzēt? Lieta tada ka mācos attālināti IT un tagad esmu iesprūdis šajā jautājumā. Drīzumā jānodod darbs bet vispāri netieku galā ar šito... izķemēju google bet kautkā galīgi nesanāk nonākt pie vēlamā rezultāta, un arī mācību materiāli tādi skopi ir... stulbums. Zinu, kad dažam labam šis šķiet easy peasy, tad varbūt TU vari nedaudz padalīties kas un kā tur ir...? Liels paldies jau iepriekš. P.S tikai bez jēliem jociņiem ja var... es tikai studēju.... Link to comment Share on other sites More sharing options...
Populārs ieraksts usver Aprīlis 27, 2020 Populārs ieraksts Share Aprīlis 27, 2020 (labots) Nu tur ir rakstīts par fenomenu, ar ko IT studenti saskaras 1. semestrī, kad sāk programmēt un nejauši uzduras datu tipam "float". Teiksim, float 0.001 saskaiti 1000 reizes - un rezultāts var būt, teiksim 1.003. Tipiskais IT students izbrīnās un sāk saprast, par ko ir runa. Nu paeksperimentē ar C++ vai līdzigu valodu, izmantojot tieši Float datu tipu. Tālāk tiek palūgts: i - pārliecināties, ka 0.01101 binārajā ir tas pats, kas 0.40625 decimālajā. ii - aprēķināt, kādās robežās tas skaitlis varētu būt, ja sistēmā būtu iespējams pierakstīt tikai 4 ciparus aiz komata iii - saskaitīt, kādas būs kopējās nobīdes, ja 0.01101 bināro saskaita kopā ar 0.01101 bināro. un tā tālāk. Tur decimālajā izteikt, procentuālo nobīdi rēķināt - skaties pats prasības. Galvenais uzdevums šeit - teorētiski ar piemēru iedzīt galvā studentam to, ko viņš būtu sapratis, ja mēģinātu programmēt ar dažādiem datu tipiem. Jeb praksē tas nozīmē - studentam pateikt, ka "float" izmantot nevajag, vajag lietot "double" un kāpēc, kādi gļuki rodas. #include <iostream> using namespace std; int main() { float summa = 0; for (int i = 0; i < 1000; i++) { summa += 0.001; } cout << "summa beigas: " << summa << endl; } Programmas izpildes rezultāts:summa beigas: 0.999991 Kas arī bija jāsaprot. Bināro-decimālo pārvēršanu, cerams, saproti. Ar daļskaitļiem ir drusku sarežģītāk, bet arī saprotami: (0.01101)₂ = (0 × 2⁰) + (0 × 2⁻¹) + (1 × 2⁻²) + (1 × 2⁻³) + (0 × 2⁻⁴) + (1 × 2⁻⁵) = (0.40625)₁₀ Labots Aprīlis 27, 2020 - usver 4 3 Link to comment Share on other sites More sharing options...
aoma Aprīlis 27, 2020 Share Aprīlis 27, 2020 Nesapratu neko, bet, manuprāt, lieliski atbildēts, nevis ar karoti ielieta mutē pareizā atbilde Link to comment Share on other sites More sharing options...
Zux Aprīlis 27, 2020 Share Aprīlis 27, 2020 @Brat2, noteikumus lasīji? Laikam jau nē. Link to comment Share on other sites More sharing options...
inteens Aprīlis 27, 2020 Share Aprīlis 27, 2020 bet atbilde jau ir iešķiebta, tadad autors var atlīdzināt dzirā vai saldumos? 1 Link to comment Share on other sites More sharing options...
Brat2 Aprīlis 27, 2020 Author Share Aprīlis 27, 2020 Liels paldies usver ✋ Link to comment Share on other sites More sharing options...
Ronalds Aprīlis 28, 2020 Share Aprīlis 28, 2020 pirms 12 stundām , usver teica: nejauši uzduras datu tipam "float". Kad es mācījos programmēt, tad mani mācīja ka float tips nav jāizmanto, tieši dēļ apaļošanas kļūdām. Kur vien var jāizmanto Binary coded decimal. Kur nevar, tur double. Un double nevar salīdzināt kā a=b, vajag ((a<b-0,0000001) and (a>b+0,00000001) Vai nu kādu precizitāti vajag. ps. Atļāvos topika nosaukumu izlabot Link to comment Share on other sites More sharing options...
rubb Aprīlis 28, 2020 Share Aprīlis 28, 2020 (labots) Nu pag. Katram datu tipam ir savs pielietojums! Lai nu kā precizitāti nodrošina kompilators.jaskatas attiecigajos manualos. Tik pat labi varam izvilkt ārā arī pierādījumu kāpēc ar nulli nevar dalīt, kurš smuki pierāda ka 1 vienāds ar 2. A runājot par float - to vienmēr jāsalīdzina ar kādu konstanti. Finanšu programmēšana tas varētu būt pussantims vai kas tamlīdzīgs... Labots Aprīlis 28, 2020 - rubb Link to comment Share on other sites More sharing options...
Anonīms Alkoholiķis Aprīlis 28, 2020 Share Aprīlis 28, 2020 (labots) Cilvēkys, kas taisa finanšu softus un izmanto float/double, ir jāsit ar mietu. Bet ja uztaisītais ir kaut kas ko citi arī izmanto, tad autors jāiepazīstina ar vid dibenzeļļu komandu. Labots Aprīlis 28, 2020 - Anonīms Alkoholiķis 1 1 Link to comment Share on other sites More sharing options...
Ronalds Aprīlis 28, 2020 Share Aprīlis 28, 2020 Nauda - tikai un vienīgi BCD! 1 Link to comment Share on other sites More sharing options...
marrtins Aprīlis 28, 2020 Share Aprīlis 28, 2020 1 stundu atpakaļ, Anonīms Alkoholiķis teica: Cilvēkys, kas taisa finanšu softus un izmanto float/double, ir jāsit ar mietu Savā laikā es šo apguvu the hard way, kad nācās SQL nomainīt visus float/double uz numeric/decimal pēc nebeidzamajām noapaļošanas kļūdām 1 Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 28, 2020 Share Aprīlis 28, 2020 Viss jau atkarīgs no tā kam to float izmanto. Piemēram man te sanāk kamerai lenķus rēķināt, quaternion (nezinu kā latviski) utt, pa lielam neviens tās float kļūdas vērā neņem un īpaši nepiedomā lietot float vai double utt. Drīzāk pielāgojas tam kādu datu tipi vajadzīgi visām 3d vai triganometrijas funkcijām. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!