Błędne wyniki przy zastosowaniu zmiennych real.

Odpowiedz Nowy wątek
2015-01-17 16:43
0

Dlaczego, gdy ustawię typy zmiennych na real a później każę programowi pomnożyć liczby zapisane w tych zmiennych, program pokazuje wynik z przecinkiem przesuniętym o jedno miejsce w lewo w stosunku do prawidłowego wyniku?

Pozostało 580 znaków

2015-01-17 16:44
0

Pokaż kod.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-18 18:37
0
program cisnhydr;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
var
  d:real;
  h:real;

CONST
G=10;

begin
    writeln('Podaj gestosc substancji (kg/m3)');
    readln(d);
    writeln('Podaj wysokosc slupa substancji (m)');
    readln(h);
    writeln('Cisnienie hydrostatyczne wynosi (Pa) ',d*G*h);
end.

dodanie znacznika <code class="delphi"> - @furious programming

edytowany 1x, ostatnio: furious programming, 2015-01-18 18:41
Wstawiaj kod w znaczniki kolorujące składnię; Jeżeli nie wiesz jak się to robi, zobacz do tego wątku: Formatowanie treści postów na forum - furious programming 2015-01-18 18:42

Pozostało 580 znaków

2015-01-18 18:47
0

http://ideone.com/Dl4ARn
2310 = 60
Nie rozumiem z czym masz problem, może nie wiesz czym jest notacja naukowa?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-18 18:55
0

Odpalam program wpisuję po pierwszym pytaniu 1 po drugim 1 i dostaje wynik 1.00000000000000E+001. Przecież 1110=10 a nie 1!

Pozostało 580 znaków

2015-01-18 18:57
0

Więc na 100% nie wiesz czym jest notacja naukowa, weź przeczytaj.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-18 18:59
0

Dobra rozumiem że zapis 1.00000000000000E+001 oznacza 10. Ale co zrobić żeby wyświetlało normalnie 10?

Pozostało 580 znaków

2015-01-18 19:03
0

linka ci podałem w pierwszym poście, obejrzałeś?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-18 19:30
0

Ale ja pytam co zrobić żeby wyświetlało wyniki normalnie zapisane a nie notacją naukową.

Pozostało 580 znaków

2015-01-18 22:47
0

To jednak nie obejrzałeś kodu z linka, który podał @_13th_Dragon.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-01-19 00:29
0

@ghost25 - możesz skorzystać ze składniowego formatowania liczb:

WriteLn('Cisnienie hydrostatyczne (Pa): ', (d * h * G):2:0);

Możesz też użyć funkcji FloatToStr:

WriteLn('Cisnienie hydrostatyczne (Pa): ', FloatToStr(d * h * G));

Możesz użyć też funkcji FloatToStrF:

WriteLn('Cisnienie hydrostatyczne (Pa): ', FloatToStrF(d * h * G, ffFixed, 1, 5));

A możesz też skorzystać z ogólnej funkcji do formatowania łańcuchów - Format:

WriteLn('Cisnienie hydrostatyczne (Pa): ', Format('%-1.3f', [d * h * G]));

Opcji jest jeszcze więcej, więc masz w czym wybierać.


edytowany 1x, ostatnio: furious programming, 2015-01-19 00:30

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0