iOS nsstring format retains the decimal point float double

Source: Internet
Author: User
Tags float double format definition

self. Ordercost. Text = [nsstringstringwithformat:@ "%.1f yuan ",self. Order. Cost. Floatvalue];

%.1F represents a decimal point,%.2f represents a 2-bit decimal point, and so on

Format definition
The format specifiers supported by the NSString formatting methods and cfstring formatting functions follow the IEEE print f specification; The specifiers is summarized in Table 1. Note that you can also use the "n$" positional specifiers such as%[email protected]%2$s. For more details, see the IEEE printf specification. You can also use these format specifiers with the NSLog function.

Table 1 Format specifiers supported by the NSString formatting methods and cfstring formatting functions
Defined Description
%@ Objective-c object, printed as the string returned by descriptionwithlocale:if available, or description otherwise. Also works with Cftyperef objects, returning the result of the Cfcopydescription function.
%% '% ' character
%d,%d,%i Signed 32-bit integer (int)
%u,%u Unsigned 32-bit Integer (Unsigned int)
%hi Signed 16-bit Integer (short)
%hu Unsigned 16-bit Integer (Unsigned short)
%qi Signed 64-bit Integer (Long Long)
%qu Unsigned 64-bit Integer (Unsigned long Long)
%x Unsigned 32-bit Integer (Unsigned int), printed in hexadecimal using the digits 0–9 and lowercase a–f
%x Unsigned 32-bit Integer (Unsigned int), printed in hexadecimal using the digits 0–9 and uppercase A–F
%qx Unsigned 64-bit Integer (Unsigned long Long), printed in hexadecimal using the digits 0–9 and lowercase a–f
%qx Unsigned 64-bit Integer (Unsigned long Long), printed in hexadecimal using the digits 0–9 and uppercase A–F
%o,%o Unsigned 32-bit Integer (Unsigned int), printed in octal
%f 64-bit floating-point number (double)
%e 64-bit floating-point number (double), printed in scientific notation using a lowercase e to introduce the exponent
%E 64-bit floating-point number (double), printed in scientific notation using a uppercase E to introduce the exponent
%g 64-bit floating-point number (double), printed in the style of%e if the exponent are less than–4 or greater than or equal To the precision, in the style of%f otherwise
%G 64-bit floating-point number (double), printed in the style of%E if the exponent are less than–4 or greater than or equal To the precision, in the style of%f otherwise
%c 8-bit unsigned character (unsigned char), printed by NSLog () as a ASCII character, or, if not a ASCII character, in the Octal format \\ddd or the Unicode hexadecimal format \\udddd, where D is a digit
%c 16-bit Unicode character (Unichar), printed by NSLog () as a ASCII character, or, if not a ASCII character, in the octal Format \\ddd or the Unicode hexadecimal format \\udddd, where D is a digit
%s null-terminated array of 8-bit unsigned characters. %s interprets its input in the system encoding rather than, for example, UTF-8.
%s null-terminated array of 16-bit Unicode characters
%p void pointer (void *), printed in hexadecimal with the digits 0–9 and lowercase a–f, with a leading 0x
%l Length modifier specifying a following a, a, E, E, F, F, g, or g conversion specifier applies to a long double argume Nt
%a 64-bit floating-point number (double), printed in scientific notation with a leading 0x and one hexadecimal digit before t He decimal point using a lowercase p to introduce the exponent
%A 64-bit floating-point number (double), printed in scientific notation with a leading 0X and one hexadecimal digit before t He decimal point using a uppercase P to introduce the exponent
%F 64-bit floating-point number (double), printed in decimal notation
%z Length modifier specifying that a following d, I, O, U, x, or x conversion specifier applies to a size_t or the correspond ing signed integer type argument
%t Length modifier specifying that a following d, I, O, U, x, or x conversion specifier applies to a ptrdiff_t or the Corresp onding unsigned integer type argument
%j Length modifier specifying that a following d, I, O, U, x, or x conversion specifier applies to a intmax_t or uintmax_t ar Gument

Platform dependencies
Mac OS X uses several data types-nsinteger, Nsuinteger,cgfloat, and cfindex-to provide a consistent means of representing Values in 32-and 64-bit environments. In a 32-bit environment, Nsinteger and Nsuinteger is defined as int and unsigned int, respectively. In 64-bit environments, Nsinteger and Nsuinteger is defined as long and unsigned long, respectively. To avoid the need to use different Printf-style type specifiers depending on the platform, you can use the specifiers show N in Table 2. Note that in some cases your may has to cast the value.

Table 2 Format specifiers for data types
type definition recommendations
nsinteger %ld or%lx Cast The value to long
nsuinteger %lu or%LX Cast The value to unsigned long
cgfloat %f or%g %f works for floats and doubles when formatting; Warning when scanning
cfindex %ld or%LX the same as Nsinteger
pointer %p %p adds 0x to the beginning of the output. If you don ' t want the, use%LX and cast to long.
Long long %lld or%llx long Long is 64-bit on both 32-and 64-bit platforms
unsigned long long %llu or%llx unsigned long Long is 64-bit on both 32-and 64-bi T platforms

The following example illustrates the use of%LD to format an nsinteger and the use of a cast.

1
2
Nsinteger I = 42;
printf("%ld\ n", (long) i);

In addition to the considerations mentioned in Table 2, there are one extra case with scanning:you must distinguish the Ty pes for float and double. You should the use%f for float, the%LF for double. If you need to use scanf (or a variant thereof) with CGFloat, switch to double instead, and copy the double to CGFloat.

1
2
3
4
CGFloat imagewidth;
Double tmp;
sscanf (str, "%LF", &tmp);
ImageWidth = tmp;

It's important to remember,%LF does not represent cgfloat correctly on either 32-or 64-bit platforms. This is unlike%LD, which works for long in all cases.

iOS nsstring format retains the decimal point float double

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.