尽管4字节的浮点数可表达相当大的数值,但对于人类而言,总不够用。一般而言,浮点数有3种类型,单精度的float和双精度的double以及更长的long double, 可参考:数据类型大小
不同语言的浮点数类型
- C/ObjC/C++: float / double / long double
- 仓颉:Float16 / Float32 / Float64
- C#: float double decimal
- Pascal: real single double extended comp
- 在PHP 4之前,浮点数类型被标识为
double,float和double在PHP中是同义词,都代表双精度浮点数。PHP4之后,float是单精度,double是双精度,不过二者经常可以互换。 - Kotlin: Float和Double
- VB: Single Double
浮点数形式
- 十进制形式: 例如12.34
- C/ObjC/C++/仓颉/C#/Java/Pascal/PHP/Kotlin/VB 等
- 指数形式:1.5E2 (格式aEb,a和b都是十进制数,a可包含小数点)
- C/ObjC/C++/仓颉/C#/Java/Pascal/PHP/Kotlin/VB 等
- 注意,VB语言用E/e表示指数是Single类型,用D/d表示Double类型的指数。
特别的,Pascal不允许1.或者.2E5这种形式,小数点前后必须有数字。这与普通C语言有差异。
浮点数类型的差异
- C语言为了区分float和double, 输入时用%f代表float, %lf代表double, 但对于输出%f和%lf作用相同。
- C99引入了long double (%Lf), 注意并不意味long double一定比double要长,根据编译器选择。
- C# float用f或者F后缀,double用d或者D后缀。
- Kotlin float类型需要用f或者F后缀,double类型不允许加d或者D后缀。
浮点数字面量区分单精度或双精度
- C/ObjC/C++/Kotlin: 浮点数后缀f或F代表单精度float,不加默认是double.
- 仓颉:f16 / f32 / f64后缀区分三种浮点数。
浮点数默认转换
- C语言中float类型是默认转换成double去处理,如下图所示。

浮点数格式串
- C/ObjC/C++ %f代表基本浮点数类型,%e是科学计数法格式,%g是简短模式。
