Kuinka muuntaa kelluvaksi int: ksi C ++: ssa (2024)

  1. Käytä suoraa tehtävää muuntaaksesi kelluvan intiksi
  2. Käytä C-tyylisiä valettuja kelluvuuden muuntamiseen int: ksi
  3. Käytä staattista_laatikkoasi kelluaksi int: ksi
  4. Käytä pyöristämisstrategioita kääntääksesi kelluvan int: ksi
  5. Johtopäätös
Kuinka muuntaa kelluvaksi int: ksi C ++: ssa (1)

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 akelluaniinintC ++: ssa.

Käytä suoraa tehtävää muuntaaksesi kelluvan intiksi

Suora määritys (määritysoperaattorilla) on suoraviivainen menetelmä akelluaniinintC ++: ssa.Kun määrität suoraan akelluamuuttuvaintMuuttuja, 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).

SittenvarataToiminto kutsutaanI_VECElementtien 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 apuolestasilmukka iteroida jokaisen elementin ylif_vec(kelluvat arvot), muuntaa ne kokonaisluvuiksi ja liitä neI_VECkäyttämällätyönnä takaisintoiminto.

Sitten käytimme toistapuolestasilmukka 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,789on osoitettu suoraanint, johtaenkatkaistu arvoarvon määrittäminen-4.Negatiivinen merkki säilytetään katkaistuun kokonaislukuarvoon.

Käytä C-tyylisiä valettuja kelluvuuden muuntamiseen int: ksi

Toinen tapa muuntaa akelluaniininton 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_castjadynaaminen, 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-llaintMuutos 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_veckokonaisluvut ja varastoida ne sisäänI_VEC.

Tämän saavuttamiseksi iteroivat jokaisen elementin läpif_vecRangaspohjainen käyttäminenpuolestasilmukka.Syömme silmukan sisällä tyyppimuunnoksen C-tyylisen näyttelijän avulla:int (f).

Kuten tulostaan ​​näemme, tämä valettu muuntaa kelluvan pisteen numeronfsen 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äästaattinenKellujen muuntaminen int: ksi

Nykyaikaisen C ++ -suosituksen mukaan meidän on käytettävä nimettyä valettua muuntamiseenkelluaarvoint.

Tätä vartenstaattinenOperaattoria 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-staattinenKaikkien reunatapausten ja ominaisuuksien luetteloon.

Syntaksi kelluvan valamiseksi int: lle C ++: ssa käyttämällästaattinenon seuraava:

intintValue= staattinen<int-(kelluvaarvo);

Tässä,kelluon kelluva muuttuja, jonka haluamme muuntaa INT: ksi, jaintValueon 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,varatakutsutaanI_VECmuistin edistäminenI_VECperustuuf_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 kelluvuudellefsisäänf_vec, se heijastaafniinintkäyttäminenstaattinen_cast (f)ja työntää tuloksena olevan kokonaisluvunI_VEC.

Tämä osoittaa prosessin jokaisen kelluvan muuntamisessaf_vecsen kokonaislukuun.

Toinen silmukka toistaa elementitI_VEC, tulostaa jokainen kokonaisluku, jota seuraa puolipiste ja tila.Silmukan jälkeen,endlkä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 ++: ssalattiatoimintoKirjastoa 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 ++: ssakiekkotoimintoKirjastoa 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äätoimintoKirjastoa käytetään yleisesti lähimpään kokonaislukuun pyöristämiseen.SeympäriToiminto 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 toiminnotkirjasto.Valitse asianmukainen pyöristämisstrategia sovelluksen erityisvaatimusten perusteella.

Johtopäätös

Muuntaa akelluaniinintC ++: 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.

Kuinka muuntaa kelluvaksi int: ksi C ++: ssa (2024)
Top Articles
Latest Posts
Article information

Author: Stevie Stamm

Last Updated:

Views: 6129

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Stevie Stamm

Birthday: 1996-06-22

Address: Apt. 419 4200 Sipes Estate, East Delmerview, WY 05617

Phone: +342332224300

Job: Future Advertising Analyst

Hobby: Leather crafting, Puzzles, Leather crafting, scrapbook, Urban exploration, Cabaret, Skateboarding

Introduction: My name is Stevie Stamm, I am a colorful, sparkling, splendid, vast, open, hilarious, tender person who loves writing and wants to share my knowledge and understanding with you.