Muunna dollareista sentteihin
On helmikuu 14, 2021 by adminYritän käyttää pyöreää toimintoa siirtyäksesi dollareista sentteihin, mutta uskon, että minulla on jotain pyöreästä funktiosta väärinymmärretty, koska en vain saa desimaaleja mukanani, kun kerron 100: lla kellukkeesta intiin. Tämä on kyseinen koodi
#include <stdio.h> #include <cs50.h> #include <math.h> int main(void) { int owed = 0; printf("Enter the owed amount: "); do { owed = GetFloat(); } while (owed < 0); owed = owed * 100.0; float owe = roundf(owed); owe = (int)owe;
Kommentit
- En ollut ' en osaa pyöristää sitä, että pyöritin pyöreää () ei roundf () voisitko selittää sen minulle kiitos
Vastaa
Pääongelma on, kuinka tallennat alkuperäisen haetun arvon. Soitat GetFloat()
ja tallennat tuloksen int div -tyyppiseen muuttujaan owed
. GetFloat () palauttaa liukuluvun numeron, joka epäsuorasti heitetään intiksi, kun yrität tallentaa sen velkaa. Prosessissa desimaalipilkkuosa katkaistaan. Tämä tarkoittaa, että voit yrittää tallentaa 4.85 koko päivän ja se tallennetaan aina kokonaislukuna 4.
GetFloat (): sta palauttamasi arvo on tallennettava kelluvaan muuttujaan, ei int: iin. Myöhemmin kerro 100: lla ja pyöristä ja sitten tallenna se intiin, kuten yrität tehdä.
Lisähuomautuksena viimeiset rivit, kun ne toimivat , eivät ole kovin puhtaita. Luod uuden kellukkeen muokataksesi toisen kellukkeen ja tallentaaksesi tuloksen. Seuraavalla rivillä heitä kelluva intiin ja tallenna int takaisin kellukkeeseen. Olisi järkevämpää pyöritä kelluketta ja säilytä se samalla kellukkeella, mutta seuraavalla rivillä uimuri valetaan int-muodossa ja säilytetään uudessa int-muunnoksessa. Tai puhtaampi asia olisi tehdä kaikki yhdellä rivillä: int change = roundf(dollars*100);
Jos tämä vastaa kysymykseesi, hyväksy napsauttamalla valintamerkkiä. Jatka foorumin ylläpitoa. 😉
kommentit
- Kuinka voisin kaipaamaan sitä? Kiitos paljon. Koodini näytti kauhealta sen jälkeen, kun oli harrastanut 3 tuntia pyörötoimintoa, en voi ' uskoa, että voisin tehdä niin typerän virheen;)
- Tämä voi olla minulle vain erittäin nirso, mutta sinun tulee pysyä kaukana implisiittisestä lähetyksestä ja käyttää aina eksplisiittistä lähetystä se tekee kääntäjälle ja tuleville ohjelmoijille paljon selvemmäksi, mitä yrität todella tehdä. Se on erittäin hyvä tapa päästä ohjelmoinnin alkuvaiheessa, koska se on toinen luonne ja säästää paljon päänsärkyä (Ja tee paljon parempaa koodia). int muutos = (int) (roundf (dollaria * 100));
Vastaa