উদ্দেশ্য গ
কোর গ্রাফিক্সের ফাউন্ডেশনের উত্স কোড থেকে CGBase.h
:
/* Definition of `CGFLOAT_TYPE', `CGFLOAT_IS_DOUBLE', `CGFLOAT_MIN', and
`CGFLOAT_MAX'. */
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
/* Definition of the `CGFloat' type and `CGFLOAT_DEFINED'. */
typedef CGFLOAT_TYPE CGFloat;
#define CGFLOAT_DEFINED 1
কপিরাইট (সি) 2000-2011 অ্যাপল ইনক।
এটি মূলত করছে:
#if defined(__LP64__) && __LP64__
typedef double CGFloat;
#else
typedef float CGFloat;
#endif
কোথায় __LP64__
বর্তমান আর্কিটেকচার * 64-বিট কিনা তা নির্দেশ করে।
মনে রাখবেন যে 32-বিট সিস্টেমগুলি এখনও 64-বিট ব্যবহার করতে পারে double
, এটি কেবলমাত্র আরও প্রসেসরের সময় নেয়, সুতরাং কোরিগ্রাফিকগুলি এটি উপযুক্ততার জন্য নয়, অনুকূলকরণের উদ্দেশ্যে ব্যবহার করে। আপনি যদি পারফরম্যান্স সম্পর্কে উদ্বিগ্ন না হন তবে নির্ভুলতার বিষয়ে উদ্বিগ্ন হন, সহজভাবে ব্যবহার করুন double
।
দ্রুতগতি
সুইফ্টে, 32-বিট আর্কিটেকচারে বা 64-বিট রাস্তাগুলির চারপাশে CGFloat
একটি struct
মোড়ক রয়েছে (আপনি এটি চালানোর সময় সনাক্ত করতে পারেন বা এর সাথে সংকলন করতে পারেন )Float
Double
CGFloat.NativeType
CoreGraphics সোর্স কোড থেকে, মধ্যেCGFloat.swift.gyb
:
public struct CGFloat {
#if arch(i386) || arch(arm)
/// The native type used to store the CGFloat, which is Float on
/// 32-bit architectures and Double on 64-bit architectures.
public typealias NativeType = Float
#elseif arch(x86_64) || arch(arm64)
/// The native type used to store the CGFloat, which is Float on
/// 32-bit architectures and Double on 64-bit architectures.
public typealias NativeType = Double
#endif
* বিশেষত, long
গুলি এবং পয়েন্টার, সুতরাং LP
। আরও দেখুন: http://www.unix.org/version2/whatsnew/lp64_wp.html