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.