Turbo Pascal
 
Szukanie zaawansowane
   
 
Home Rejestracja FAQ Użytkownicy Grupy Galerie  
 
 


Forum Turbo Pascal Strona Główna Pytania Jak zaokrąglic liczbę ?
Wyświetl posty z ostatnich:   
       
Napisz nowy temat  Odpowiedz do tematu Idź do strony 1, 2  Następny

Pon 15:24, 20 Lut 2006
Autor Wiadomość
leogas
Początkujący



Dołączył: 18 Lut 2006
Posty: 16
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Piła

Temat postu: Jak zaokrąglic liczbę ?

Jak zaokrąglic liczbę do kilku miejsc po przecinku np. 65.557 -> 65,56 :?:

Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  
Pon 15:46, 20 Lut 2006
Autor Wiadomość
zielony_admin
Średnio zaawansowany



Dołączył: 18 Lut 2006
Posty: 22
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

Temat postu:

Hmmmmm.... Można by przesunąć przecinek o x miejsc w prawo (x to liczba miejsc po przecinku, do której mamy zaokrąglić liczbę) np. 65,6556 --> 6565,56. Później użyć round(6565.56). Następnie przesunąć przecinek o x miejsc w lewo i mamy wynik: 65,66. Spróbuję to zaimplementować, ale nie daję 100 %, że mi się uda :mrgreen: .

Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  

Pon 15:56, 20 Lut 2006
Autor Wiadomość
leogas
Początkujący



Dołączył: 18 Lut 2006
Posty: 16
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Piła

Temat postu:

Gdzieś znalazłem takie coś :

Kod:
function ExtRound (num: Double; r: Integer): Double;
var dec: LongInt;
begin
  dec:=Power(10,r);
  ExtRound=Round(num*dec)/dec;
end;


ale nie za bardzo rozumiem ten kod :lol:


Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  

Pon 16:11, 20 Lut 2006
Autor Wiadomość
zielony_admin
Średnio zaawansowany



Dołączył: 18 Lut 2006
Posty: 22
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

Temat postu:

To ma sens, działa podobnie jak mówiłem.

1. Do funkcji "wchodzą" dwie zmienne: num: liczba, którą będziemy zaokrąglać, oraz r: ilość miejsc po przecinku, do których będziemy zaokrąglać
2. Zmienna lokalna dec: podnosimy w niej 10 do r, czyli np. r = 2, to dec = 100
3. Później przesuwa liczbę o r miejsc w prawo: num*dec, i zaokrągla uzyskaną liczbę poleceniem round(num*dec)
4. Na końcu przesuwa przecinek z powrotem w lewo, dzieląć całość przez dec

Bardzo proszę o komentarze, czy moje rozumowanie jest dobre :mrgreen: .


Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  

Pon 16:19, 20 Lut 2006
Autor Wiadomość
leogas
Początkujący



Dołączył: 18 Lut 2006
Posty: 16
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Piła

Temat postu:

Zapewne tak :)
Dzięki za przetłumaczenie tego kodu :lol:


Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  

Pon 16:49, 20 Lut 2006
Autor Wiadomość
leogas
Początkujący



Dołączył: 18 Lut 2006
Posty: 16
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Piła

Temat postu:

Chciałem zrobić program który zaokrągla liczbe ale pojawiły się komplikacje

Kod:
program przykład;

uses math;

var
  num : double;
  r : integer;

function rounds (num : double; r : integer): double;

var
  dec : longint;

begin
  dec := power(10, r);
  rounds = round(num * dec) / dec;
end;

begin
  write('Podaj liczbe ');
  readln(num);
  write('Podaj ilosc miejsc po przecinku : ');
  readln(r);
  writeln('Liczba zaokraglona do ', r, ' miejsc po przecinku');
end.


Kto mi może powiedzieć gdzie jest błąd :?:


Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  

Pon 17:03, 20 Lut 2006
Autor Wiadomość
zielony_admin
Średnio zaawansowany



Dołączył: 18 Lut 2006
Posty: 22
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

Temat postu:

Kod:
program przyklad;

  {$APPTYPE CONSOLE}

uses math, SysUtils;

function rounds (num : double; r : integer): double;

var
  dec : double;

 //tutaj miałeś integer, a funkcja power zwraca liczbę rzeczywistą

begin
  dec := power(10, r);
  result := round(num * dec) / dec;
end;

var
  num : double;
  r : integer;

begin
  write('Podaj liczbe ');
  readln(num);
  write('Podaj ilosc miejsc po przecinku : ');
  readln(r);
  writeln('Liczba zaokraglona do ', r, ' miejsc po przecinku to: ', rounds(num,r):0:2);
  readln;
end.



:!: Przeanalizuj sobie ten program, błąd polegał na złym dobraniu typów zmiennych.


Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  

Pon 17:25, 20 Lut 2006
Autor Wiadomość
leogas
Początkujący



Dołączył: 18 Lut 2006
Posty: 16
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Piła

Temat postu:

Dobra rozumiem :)

Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  
Napisz nowy temat  Odpowiedz do tematu Idź do strony 1, 2  Następny

 
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


      Do góry  

Strona 1 z 2
Idź do strony 1, 2  Następny
Skocz do:  
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Avalanche style by What Is Real © 2004
             
Regulamin