|
Turbo Pascal Twoje źródło wiedzy o Turbo Pascalu. |
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
|
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|