- Käytä suoraa tehtävää muuntaaksesi kelluvan intiksi
- Käytä C-tyylisiä valettuja kelluvuuden muuntamiseen int: ksi
- Käytä staattista_laatikkoasi kelluaksi int: ksi
- Käytä pyöristämisstrategioita kääntääksesi kelluvan int: ksi
- Johtopäätös
![Kuinka muuntaa kelluvaksi int: ksi C ++: ssa (1) Kuinka muuntaa kelluvaksi int: ksi C ++: ssa (1)](https://i0.wp.com/www.delftstack.com/img/Cpp/feature-image---convert-float-to-int-Cpp.webp)
Muuntaa liukulukuarvo (kellua
) kokonaisluku (int
) vaaditaan usein käsittelemällä numeerisia toimintoja ja tietojenkäsittelyä.C ++: ssa on useita menetelmiä tämän muuntamisen saavuttamiseksi, jokaisella on ominaisuudet ja käyttötapaukset.
Tämä artikkeli osoittaa useita menetelmiä kuinka muuntaa akellua
niinint
C ++: ssa.
Käytä suoraa tehtävää muuntaaksesi kelluvan intiksi
Suora määritys (määritysoperaattorilla) on suoraviivainen menetelmä akellua
niinint
C ++: ssa.Kun määrität suoraan akellua
muuttuvaint
Muuttuja, C ++ -kääntäjä katkaisee arvon automaattisesti poistamalla desimaalin osan ja säilyttämällä vain kokonaisluku.
Tämä menetelmä toimii tehokkaasti positiivisten ja negatiivisten kelluvien arvojen suhteen.
Tässä on syvempi keskustelu suorasta tehtävästä kelluvien katkaisun yhteydessä kokonaislukuille:
#sisältää #sisältää #sisältää käyttäminenstd:::cout;käyttäminenstd:::endl;käyttäminenstd:::vektori;int pää-() {vektori<kellua-f_vec {12.123-32.23-534,333333339};vektori<int-I_VEC;i_vec.reserve (f_vec.size ()); puolesta(konsertti auto Jaf: f_vec) {i_vec.push_back (f);} puolesta(konsertti auto Jaminä: i_vec) {nyrkkeily<<minä<< ";";}nyrkkeily<<endl; palataExit_success;}
Lähtö:
12;32;534;
Tässä määrittelimme kelluvien vektorin (f_vec
), alustettu kolmella kelluvalla arvolla ja tyhjä kokonaislukuvektori (I_VEC
).
Sittenvarata
Toiminto kutsutaanI_VEC
Elementtien lukumäärän ennakkomaksuf_vec
.Tämä on suorituskyvyn optimointi tarpeettomien uudelleenjakojen estämiseksi, kun elementtejä lisätään.
Tämän jälkeen käytimme apuolesta
silmukka iteroida jokaisen elementin ylif_vec
(kelluvat arvot), muuntaa ne kokonaisluvuiksi ja liitä neI_VEC
käyttämällätyönnä takaisin
toiminto.
Sitten käytimme toistapuolesta
silmukka iteroida jokaisen elementin yliI_VEC
(kokonaisluvut) ja tulosta ne standardilähtöön, joka on erotettu puolipisteellä ja tiloilla.
Suora määritys toimii myös negatiivisten kelluvien arvojen suhteen ottaen huomioon kelluvan merkki.Esimerkiksi:
#sisältää int pää-() { kelluanegatiivinen kelluvuusarvo= -4.789; intkatkaistu arvo=negatiivinen kelluva arvo;std:::nyrkkeily<< "Alkuperäinen kelluva arvo:" <<negatiivinen kelluvuusarvo<<std:::endl;std:::nyrkkeily<< "Katkaistu kokonaislukuarvo:" <<katkaistu arvo<<std:::endl; palata 0 -;}
Lähtö:
Alkuperäinen kelluva arvo: -4,789Katkaistu kokonaislukuarvo: -4
Tässä tapauksessa negatiivinen kelluva arvo-4,789
on osoitettu suoraanint
, johtaenkatkaistu arvo
arvon määrittäminen-4
.Negatiivinen merkki säilytetään katkaistuun kokonaislukuarvoon.
Käytä C-tyylisiä valettuja kelluvuuden muuntamiseen int: ksi
Toinen tapa muuntaa akellua
niinint
on C-tyylisen näyttelijän käyttö.Kun castingia käytetään, kehotamme kääntäjää nimenomaisesti tulkitsemaan kelluvaa arvoa kokonaisluvuna, jättämättä desimaaliosan ja tarkkuuden mahdollisen menettämisen.
Kun taas C ++ tarjoaa turvallisempia vaihtoehtoja, kutenstaattinen
-tulkita uudelleen
-const_cast
jadynaaminen
, C-tyylinen valettu käyttämällä(Tyypinimi)
Merkintä on perinteisempi ja joustavampi lähestymistapa.
On kuitenkin tärkeää huomata, että C-tyylistä näyttelijää pidetään vaarallisena eikä sitä suositella nykyaikaisessa C ++: ssa sen mahdollisuusta tahattoman käyttäytymisen ja tyypin turvallisuuden menettämisen vuoksi.
Yksi erityinen huolenaihe C-tyylisestä valusta on mahdollisuus määrittelemättömään käyttäytymiseen, kun heitetään osoittimia puutteellisiin tai toisiinsa liittymättömiin tyyppeihin.Siksi on välttämätöntä noudattaa varovaisuutta käyttäessäsi C-tyylisiä valoja varmistaakseen, että ne ovat sopivia annetulle kontekstille eivätkä johda odottamattomiin kysymyksiin.
Tässä on esimerkki akellua
-llaint
Muutos C-tyylisen näyttelijän avulla:
#sisältää #sisältää #sisältää käyttäminenstd:::cout;käyttäminenstd:::endl;käyttäminenstd:::vektori;int pää-() {vektori<kellua-f_vec {12.123-32.23-534,333333339};vektori<int-I_VEC;i_vec.reserve (f_vec.size ()); puolesta(konsertti auto Jaf: f_vec) {i_vec.push_back (int(f));} puolesta(konsertti auto Jaminä: i_vec) {nyrkkeily<<minä<< ";";}nyrkkeily<<endl; palataExit_success;}
Lähtö:
12;32;534;
Annetussa koodissa aloitamme julistamalla kelluvien vektorin (f_vec
) ja kokonaislukujen vektori (I_VEC
).Tavoitteena on muuntaa kelluva pisteen numerot sisäänf_vec
kokonaisluvut ja varastoida ne sisäänI_VEC
.
Tämän saavuttamiseksi iteroivat jokaisen elementin läpif_vec
Rangaspohjainen käyttäminenpuolesta
silmukka.Syömme silmukan sisällä tyyppimuunnoksen C-tyylisen näyttelijän avulla:int (f)
.
Kuten tulostaan näemme, tämä valettu muuntaa kelluvan pisteen numeronf
sen kokonaislukuun.
Käytännössä on parempi käyttää enemmän tyyppisempiä casting-mekanismeja, joita C ++ tarjoaa, kuten esimerkiksistaattinen
, joka tarjoaa kääntämisajan tyypin tarkistusta ja sitä pidetään yleensä turvallisempana C-tyyliseen valuun verrattuna.Hyödyntämällästaattinen
, koodista tulee itsestään selvempi ja tarjoaa tyyppisen turvallisuuden tason, josta C-tyylinen valu puuttuu.
Keskustelemme tästä tarkemmin seuraavassa osassa.
Käyttäästaattinen
Kellujen muuntaminen int: ksi
Nykyaikaisen C ++ -suosituksen mukaan meidän on käytettävä nimettyä valettua muuntamiseenkellua
arvoint
.
Tätä vartenstaattinen
Operaattoria käytetään turvallisiin ja yleisiin tyyppisiin valuihin C ++: ssa.Sitä käytetään, kun tyyppimuunnoksen tiedetään olevan turvallinen käännösaikana, eikä siihen liity osoitinmuunnoksia.
Se muuntaa tyypit tarkistamatta arvoa;Siksi ohjelmoija on vastuussa oikeellisuuden varmistamisesta.Huomaa, että nimetyt näyttelijät ja heidän käyttäytymisensä ovat melko monimutkaisia tarttua yhdellä yleiskatsauksella, joten tässä onkoko käsikirja-staattinen
Kaikkien reunatapausten ja ominaisuuksien luetteloon.
Syntaksi kelluvan valamiseksi int: lle C ++: ssa käyttämällästaattinen
on seuraava:
intintValue= staattinen<int-(kelluvaarvo);
Tässä,kellu
on kelluva muuttuja, jonka haluamme muuntaa INT: ksi, jaintValue
on tuloksena oleva kokonaislukumuuttuja.
Osoitamme tämä täydellisen esimerkin avulla:
#sisältää #sisältää #sisältää käyttäminenstd:::cout;käyttäminenstd:::endl;käyttäminenstd:::vektori;int pää-() {vektori<kellua-f_vec {12.123-32.23-534,333333339};vektori<int-I_VEC;i_vec.reserve (f_vec.size ()); puolesta(konsertti auto Jaf: f_vec) {i_vec.push_back (staattinen<int-(f));} puolesta(konsertti auto Jaminä: i_vec) {nyrkkeily<<minä<< ";";}nyrkkeily<<endl; palataExit_success;}
Lähtö:
12;32;534;
Kuten voimme nähdäpää-
Funktio, kaksi vektoria julistetaan:f_vec
, kelluvien vektori jaI_VEC
, tyhjä kokonaislukuvektori.
Sitten,varata
kutsutaanI_VEC
muistin edistäminenI_VEC
perustuuf_vec
.Tämä parantaa tehokkuutta vähentämällä tarvittavien uudelleenjakojen määrää, koska elementtejä lisätäänI_VEC
.
Tätä seuraa silmukka, joka iteroi jokaisen elementin ylif_vec
.Jokaiselle kelluvuudellef
sisäänf_vec
, se heijastaaf
niinint
käyttäminenstaattinen_cast
ja työntää tuloksena olevan kokonaisluvunI_VEC
.
Tämä osoittaa prosessin jokaisen kelluvan muuntamisessaf_vec
sen kokonaislukuun.
Toinen silmukka toistaa elementitI_VEC
, tulostaa jokainen kokonaisluku, jota seuraa puolipiste ja tila.Silmukan jälkeen,endl
käytetään uuden rivin asettamiseen tulosteen tarjoamalla puhdas muotoilu painetuille kokonaislukuille.
Lopuksi,pää-
toimintojen palautuksetExit_success
, osoittaen onnistuneen ohjelman suorittamisen käyttöjärjestelmään.
Käytä pyöristämisstrategioita kääntääksesi kelluvan int: ksi
Pyöristäminen (lattia)
Liukuluku-lukumäärän pyöristäminen sisältää numeron desimaaliosan katkaisemisen, siirtyen tehokkaasti kohti nollaa.Tämä tarkoittaa, että kaikki kelluvuuden murto -osa poistetaan, jättäen vain kokonaislukuosa tai kokonaisluku.
C ++: ssalattia
toiminto
Kirjastoa käytetään yleisesti pyöristämisen saavuttamiseen.Se palauttaa suurimman kokonaisluvun, joka on pienempi tai yhtä suuri kuin annettu kelluva arvo.
Tässä on yksinkertainen esimerkki, joka osoittaa, kuinka pyöreä kelluminen lähimpään kokonaislukuun:
#sisältää #sisältää int pää-() { kelluakellu= 4.625; intintValue= staattinen<int-(STD:::lattia (kelluvaarva));std:::nyrkkeily<< "Pyöristetty arvo:" <<intValue<<std:::endl; palata 0 -;}
Lähtö:
Pyöristetty arvo: 4
Tässä esimerkissäSTD :: Lattia (kelluvaarva)
Pyöristää kelluvan arvon lähimpään kokonaislukuun (tässä tapauksessa 4) ja muuntaa sen sitten kokonaislukuksi käyttämällästaattinen_cast
.
Pyöristäminen (Ceil)
Liukulukumäärän pyöristämiseen sisältyy pienimmän kokonaisluvun löytäminen, joka on suurempi tai yhtä suuri kuin annettu kelluvuus.Tämä tarkoittaa, että kaikki kelluvuuden murto -osa on pyöristetty lähimpään kokonaislukuun.
C ++: ssakiekko
toiminto
Kirjastoa käytetään yleisesti pyöristämisen saavuttamiseen.Se palauttaa pienimmän kokonaisluvun, joka on suurempi tai yhtä suuri kuin annettu kelluva arvo.
Tässä on esimerkki, joka osoittaa, kuinka pyörittää kelluvuus lähimpään kokonaislukuun:
#sisältää #sisältää int pää-() { kelluakellu= 4.245; intintValue= staattinen<int-(STD:::Ceil (kelluvaarva));std:::nyrkkeily<< "Pyöristetty arvo:" <<intValue<<std:::endl; palata 0 -;}
Lähtö:
Pyöristetty arvo: 5
Tässä,STD :: CEIL (FloatValue)
Pyöristää kelluvan arvon lähimpään kokonaislukuun (tässä tapauksessa 5) ja muuntaa sen sitten kokonaislukuksi käyttämällästaattinen_cast
.
Pyöristäminen lähimpään kokonaislukuun
Liukuluku-numeron pyöristäminen lähimpään kokonaislukuun kuuluu lähin kokonaisluku annetulle kelluvuudelle.Jos murto -osa on alle 0,5, se on pyöristetty;Jos se on 0,5 tai suurempi, se on pyöristetty.
C ++: ssapyöristää
toiminto
Kirjastoa käytetään yleisesti lähimpään kokonaislukuun pyöristämiseen.Seympäri
Toiminto palauttaa lähimmän kokonaisluvun arvon annetulle kelluvalle arvolle.
Tässä on esimerkki:
#sisältää #sisältää int pää-() { kelluakellu= 4.5; intintValue= staattinen<int-(STD:::pyöreä (kelluvaarva));std:::nyrkkeily<< "Pyöristetty lähimpään kokonaislukuun:" <<intValue<<std:::endl; palata 0 -;}
Lähtö:
Pyöristetty lähimpään kokonaislukuun: 5
Tässä esimerkissäSTD :: Pyöreä (kelluva arvo)
Pyöristää kelluvan arvon lähimpään kokonaislukuun (tässä tapauksessa 5) ja muuntaa sen sitten kokonaislukuksi käyttämällästaattinen_cast
.
Kellujen muuntaminen kokonaislukuksi C ++: ssa käyttämällä erilaisia pyöristämisstrategioita, kuten pyöristäminen, pyöristäminen tai lähimmän kokonaisluku, on suoraviivainen käyttämällä sopivia toimintoja, jotka tarjoavat asianmukaiset toiminnot
kirjasto.Valitse asianmukainen pyöristämisstrategia sovelluksen erityisvaatimusten perusteella.
Johtopäätös
Muuntaa akellua
niinint
C ++: ssa on perustavanlaatuinen toiminta, jota usein esiintyy eri sovelluksissa.Jokainen tässä artikkelissa esitetty menetelmä tarjoaa erilaisen lähestymistavan, jonka avulla voit valita ohjelman erityisvaatimusten perusteella.
Tarvitsetko katkaisun, pyöristämisen tai ohjattavan pyöristämisen, nämä menetelmät tarjoavat sinulle joustavuuden käsitellä kelluvuutta koskevia muuntamisia tehokkaasti.Kunkin menetelmän vaikutusten ymmärtäminen on välttämätöntä tiedon manipuloinnille ja vankalle ohjelmoinnille C ++: ssa.