What is %.2f? Why is it not just %f? Is there some additional calculation happening? The half function already does all the calculations including splitting the bill, so I’m not sure what %.2f is. (Btw why is this code not formatting correctly in lemmy?)


#include 
#include 

float half(float bill, float tax, int tip);

int main(void)
{
    float bill_amount = get_float("Bill before tax and tip: ");
    float tax_percent = get_float("Sale Tax Percent: ");
    int tip_percent = get_int("Tip percent: ");

    printf("You will owe $%.2f each!\n", half(bill_amount, tax_percent, tip_percent));
}

// TODO: Complete the function
float half(float bill, float tax, int tip)
{
    bill += (bill * (tax / 100.0));
    bill += (bill * (tip / 100.0));

    bill /= 2;

    return bill;
}
  • AlmightySnoo 🐢🇮🇱🇺🇦
    link
    fedilink
    5
    edit-2
    9 months ago

    If you want multi-line code, you need to put it like this:

    For these kinds of questions, your best friend is the documentation. In particular, a man 'printf(3)' yields:

    Format of the format string

    The format string is a character string, beginning and ending in its initial shift state, if any. The format string is composed of zero or more directives: ordinary characters (not %), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments. Each conversion specification is introduced by the character %, and ends with a conversion specifier. In between there may be (in this order) zero or more flags, an optional minimum field width, an optional precision and an optional length modifier.

    The overall syntax of a conversion specification is:

    %[$][flags][width][.precision][length modifier]conversion

    • @PoolloverNathan
      link
      39 months ago

      Wouldn’t man 3 printf do the same thing without the quotes?

      • Yup that definitely does the same thing.

        If anyone else is wondering why the 3 is there, it’s because usually you won’t find just one printf. You have the printf user command, the printf function from the standard C library, and POSIX manual entries for both the printf user command and C function. The id number is then an identifier for the corresponding section of the printf entry, and you can list all of them by doing a man -f printf.

        • JackbyDev
          link
          English
          19 months ago

          Awesome, I think I’m gonna consider aliasing man to man -f lol. Can you think of any compelling reason not to?

          Actually, nevermind, I misunderstood you. -f just lists the pages, it doesn’t print all of their content.

        • ono
          link
          fedilink
          English
          19 months ago

          The id number is then an identifier for the corresponding section of the printf entry,

          Nit: 3 is the manual section in which to look for the named entry (aka page), not a section of the entry.

    • @starman
      link
      English
      2
      edit-2
      9 months ago

      Wait, you can use man on C functions?

        • @starman
          link
          English
          19 months ago

          That’s nice.

      • ono
        link
        fedilink
        English
        2
        edit-2
        9 months ago

        You can if you have those man pages installed.

        You might also enjoy man ascii, man operator, or even man intro.

        Unfortunately, there are still some gaps:

        $ man love
        No manual entry for love