Autor Zpráva
Jiřík
Profil
dobrý den,
Nevím si rady s takovou banalitou. Mohli byste mi prosím poradit jak na to? Hraje v tom roly "double"?
if $a/$b = desetinné číslo echo "hláška1"
else $a/$b = celé číslo echo "hláška2"

Díky za odpovědi
Mike8748
Profil
if (intval($a/$b)==($a/$b)) { echo "vysledek je cely cislo"; } else { echo "neni"; }

treba tak
Jiřík
Profil
Mike8748 hlásí mi to Warning: Division by zero in. tak jsem to trošku zkoumal a nějak tu nulu ne a ne ošetřit
Mastodont
Profil
Nulu ošetři ještě předtím.
Měsíček
Profil
Reaguji na Jiříka:

Pokud si vypůjčím základ od kolegy Mike8748 tak:
<?php
/**
  * Funkce vracející 
  *   [1] => je-li výsledek celé číslo
  *   [0] => není-li výsledek celé číslo
  */
  function isOutputInt ($number_1,$number_2) {
    if ($number_1 == 0 || $number_2 == 0) return 0;
      return ((intval($number_1/$number_2) == ($number_1/$number_2)) ? 1 : 0);
  }
    echo "Výsledek ".(isOutputInt(10,2) ? "je" : "není")." celé číslo"; // 5    [  je]
    echo "Výsledek ".(isOutputInt(10,3) ? "je" : "není")." celé číslo"; // 3.3  [není]
?>
Přičemž označená část bude buď 0 [není celé číslo] a nebo 1 [je celé číslo] .. už se mi to plete :)
koudi
Profil
A co funkce is_float(), nestačila by?
Majkl578
Profil
koudi
ne, deleni desetinnych cisel s vyslednym nedesetinnym ponecha typ float.

Měsíček
neni nahodou k vraceni ano/ne urcene true a false? uz jen z principu, ze je to prehlednejsi...
Jiřík
Profil
Lidi at to zkouším jak to zkouším, tak mi z toho leze všecko, jen ne to co potřebuju. Potřebuju výstup s formuláře přepočítat a vrátit výsledek. Problem je v tom že výsledek s desetinnýmm číslem musí mít nějaký komentář a celé číslo musí mít jiný komentář. Další problém je ten že php neovládám a všecko co se mi podaří je zásluhou měsíců studia. Můžu poprosit o řešení? Prostě to sám nezvládám. Děkuju
Alphard
Profil
Jiřík
ukaž, co už máš
jestli to není zcela špatně, je jednodušší to opravit, než napsat od začátku
Měsíček
Profil
Reaguji na Majkl578:

"neni nahodou k vraceni ano/ne urcene true a false? uz jen z principu, ze je to prehlednejsi..."ým

Ano, svým způsobem i ano, ale stejně tak je k tomu určena i zástupná konstanta 0 a nebo !0 (1). Osobně mi příjde 0/1 lepší, protože šetří místo v kódu a vnitřně se dokáži rychleji zorientovat u 0/1 než u false/true.

Reaguji na Jiříka:

"Můžu poprosit o řešení? Prostě to sám nezvládám. Děkuju"

V mém předchozím příspěvku máš řešení. Stačí si ho dát ke kontrole výstupů svého formuláře. Pokud opravdu ani tohle nedokážeš implantovat tak je to hodně špatné, ale dej sem potom alespoň odkaz a nebo celý kód na svůj formulář, PHP kód k tomu odpovídající ti zde už někdo napíše.
bohyn
Profil
A co treba pouzit modulo?
if($a % $b) {
  // desetinne cislo
}
else {
  // cele cislo
}


Edit: $b musi byt cele cislo
Jiřík
Profil
Toto je zatím to co se nejvíc podobá tomu co chci dosáhnout. Samozřejmě jde výsledku dosáhnout i jinak a obsáhleji, ale je potřeba elegantnější řešení.
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title> formulář na výpočet schodů</title>
</head>

<form action="schody.php">
  Zadej přesnou výšku patra v milimetrech <input name="v">mm<br>
  <button type="submit" name="ok">
      Spočítej schodiště
    </button>
</form>

<?php
 $v =  ($_GET["v"]);
 $stp = "150";
 echo "V případě, že bude výška jednoho schodišťového stupně".$stp." mm, pak bude počet schodišťových stupňů &nbsp".$v/$stp;
 ?>
 <br>
 <?php echo 'pokud je výsledek jiný než celé číslo, pak se musí celková výška dělit jiným číslem'; 
 /* Takže záměr je, aby se zobrazila hláška příslušná výsledku. Když bude výsledkem celé číslo, pak se zobrazí hláška "Toto je proveditelné". Když bude výsledkem desetinné číslo pak se musí zobrazit hláška "nelze vytvořit schodiště jehož součástí je jeden schod jiný než ostatní." */
 
 ?>
</body>


</html> 
Jiřík
Profil
To: Měsíček
tvůj postup jsem zkoušel nějak aplikovat, ale fakt nevím jak do výstupu z formuláře
Měsíček
Profil
Pochopil jsem to správně?
<form action="<?php echo $_SERVER["PHP_SELF"];?>">
  Zadej přesnou výšku patra v milimetrech <input name="vyska"> mm<br>
    <button type="submit" name="ok">
      Spočítej schodiště
    </button>
</form>

<?php
/**
  * Definice funkce
  */
  function isOutputInt ($number_1,$number_2) {
    if ($number_1 == 0 || $number_2 == 0) return 0;
      return ((intval($number_1/$number_2) == ($number_1/$number_2)) ? 1 : 0);
  }
/**
  * Definice proměnné "STP"
  */
  $stp = 150;
/**
  * Kontrola a následné vypsání hlášek
  */
if (isset($_GET["ok"]) && !empty($_GET["vyska"])) {
  if (isOutputInt($_GET["vyska"], $stp)) {
/**
  * Je to celé číslo
  */
    echo "V případě, že bude výška jednoho schodišťového ";
    echo "stupně {$stp} mm, pak bude počet schodišťových ";
    echo "stupňů &nbsp;".($_GET["vyska"]/$stp); 
    echo "&nbsp; takže tohle <strong>je</strong> proveditelné.";
  } else {
/**
  * Není to celé číslo
  */
    echo "Pokud je výsledek jiný než celé číslo, pak se musí ";
    echo "celková výška dělit jiným číslem. Takže nelze vytvořit ";
    echo "schodiště jehož součástí je jeden schod jiný než ostatní.";
  }
}
?>
Jiřík
Profil
Měsíčku pochopil jsi to naprosto perfektně.
Moc děkuju za pomoc za perfektní řešení. Dobrá práce

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: