Q+ 文档

十六进制浮点字面量(1.7.0-dev / v4.38)

English summary. C99 hex-float literals: 0x1.8p+1 (hex digits, optional .frac, required p±exp); exact binary64 conversion (≤53 bits exact; >53 bits RNE); exact value > DBL_MAX is compile-time loud, underflow to ±0; qbc type12 raw bits → VM/AOT bit-identical. Limits: p required, raw literal ≤2048 B, host C99 strtod dependency; decimal correct rounding is a separate path.

Q+ 1.4.8 引入(当前 spec v4.36,仍支持) C99 十六进制浮点字面量,用于精确表达 binary64 值。 本页记录语法、转换语义、限制与 VM/AOT 行为。

语法

[+-] 0x hexdigits [ "." hexdigits ] ( "p" | "P" ) [+-] decimal_digits
fn main() -> i32 {
    print_float(0x1.8p+1)
    print(" ")
    print_float(0x1p-1074)
    print(" ")
    print_float(0x1.fffffffffffffp+1023)
    print("\n")
    return 0
}

转换语义(精确优先)

与十进制正确舍入的关系

字面量1.4.7-dev / v4.331.4.8-dev / v4.34
十进制 f64(如 0.1)任意精度正确舍入(type12 raw bits)同 v4.33
十六进制 f64(如 0x1.8p+1)不支持精确转换(>53 位 RNE;超 DBL_MAX loud)

两者都走 qbc type12 raw IEEE bits,VM/AOT 不重新做浮点解析。

限制(不得宣称无边界)

复跑

tools/build.sh
tools/test.sh
# 手动 bits 对照(可选):tools/manual/f64_hex_qbc_check.py

发布候选(NOT PUBLISHED);站点/文档不构成发布声明。相关:十进制字面量定义域见 docs/qplus_language_spec.md §9.5.10/§10.2;qfmt 与格式化见 qfmt 页。

← Q+ Hub