Hvordan Rund til et heltall i Perl

Perl har ikke en innebygd funksjon spesielt utviklet for å runde flyttall til heltall, men du kan skrive din egen funksjon som inkorporerer sprintf funksjonen for å runde disse tallene til nærmeste hele. Den sprintf funksjonen tar to argumenter, et format og en liste. Listen er ganske enkelt nummeret du ønsker å runde opp eller ned. Bruk «% .0f" som format, som forteller funksjonen at antallet er flyttall og du vil avrunde den til null sifre etter desimaltegnet.

Bruksanvisning

1 Åpne et Perl program fil. Skriv inn følgende kode:

sub intCheck {

min $ num = shift;

tilbake ($ num = ~ m / ^ \ d + $ /);

}

Dette skaper en funksjon som heter "intCheck" som først får et argument gått til det og lagrer det til en variabel kalt "$ num" og deretter returnerer "true" dersom dette tallet er et helt tall eller "false" hvis det ikke er.

2 Skriv inn følgende kode:

sub runde {

min $ var = shift;

if (intCheck ($ var - 0,5)) {$ var = $ var + 0,1; }

tilbake sprintf ( "% 0f.", $ var);

}

Dette skaper en funksjon som heter "rund". Det blir argumentet gått til det og lagrer det i "$ var" variable. Den vil deretter anrope intCheck funksjon og passerer den variabelt antall minus 0,5. Hvis intCheck funksjonen returnerer "true", den $ var har 0,1 lagt til den. Funksjonen round runder da variabelen til nærmeste hele tall, og returnerer den.

3 Skriv inn følgende kode:

print runde (4,49). "\ N";

print runde (4,51). "\ N";

print runde (4,5). "\ N";

Disse linjene teste runde funksjon. Den første linjen runder ned til fire og de neste to linjene runde opp til fem.

4 Lagre Perl-filen.

Hint

  • Den sprintf funksjonen virker å runde flyttall til heltall nesten perfekt. Men når når et nummer er nøyaktig halvveis mellom to hele tall, runder det ned i stedet for opp. Ved å trekke 0,5 fra antall ender opp passerer dette nummeret til intCheck, returnerer intCheck "true", som betyr den runde funksjon vet å runde det opp i stedet for ned.
  • Du kan endre denne funksjonen til å runde flyttall til en rekke desimaler. Slett hvis setningen fra runden funksjon og endring "% .0f" til "% .1f" for å runde med én desimal, eller «% .2f" for å runde med to desimaler, og så videre.