Why is the letter f used at the end of a float no.?

后端 未结 9 2265
难免孤独
难免孤独 2020-12-09 18:52

I just wanted some information about this.

float n = 2.99944323200023f

What does the f at the end of the literal do? What is i

9条回答
  •  爱一瞬间的悲伤
    2020-12-09 19:10

    The f indicates it's a floating point literal, not a double literal (which it would implicitly be otherwise.) It hasn't got a particular technical name that I know of - I tend to call it the "letter suffix" if I need to refer to it specifically, though that's somewhat arbitrary!

    For instance:

    float f = 3.14f; //Compiles
    float f = 3.14;   //Doesn't compile, because you're trying to put a double literal in a float without a cast.
    

    You could of course do:

    float f = (float)3.14;
    

    ...which accomplishes near enough the same thing, but the F is a neater, more concise way of showing it.

    Why was double chosen as the default rather than float? Well, these days the memory requirements of a double over a float aren't an issue in 99% of cases, and the extra accuracy they provide is beneficial in a lot of cases - so you could argue that's the sensible default.

    Note that you can explicitly show a decimal literal as a double by putting a d at the end also:

    double d = 3.14d;
    

    ...but because it's a double value anyway, this has no effect. Some people might argue for it advocating it's clearer what literal type you mean, but personally I think it just clutters code (unless perhaps you have a lot of float literals hanging around and you want to emphasise that this literal is indeed meant to be a double, and the omission of the f isn't just a bug.)

提交回复
热议问题