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?
Pokaż kod.
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
http://ideone.com/Dl4ARn
2310 = 60
Nie rozumiem z czym masz problem, może nie wiesz czym jest notacja naukowa?
Odpalam program wpisuję po pierwszym pytaniu 1 po drugim 1 i dostaje wynik 1.00000000000000E+001. Przecież 1110=10 a nie 1!
Więc na 100% nie wiesz czym jest notacja naukowa, weź przeczytaj.
Dobra rozumiem że zapis 1.00000000000000E+001 oznacza 10. Ale co zrobić żeby wyświetlało normalnie 10?
linka ci podałem w pierwszym poście, obejrzałeś?
Ale ja pytam co zrobić żeby wyświetlało wyniki normalnie zapisane a nie notacją naukową.
To jednak nie obejrzałeś kodu z linka, który podał @_13th_Dragon.
@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ć.