{
  "category": "Text functions",
  "display_name": "VALUE",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.VALUE",
  "implementation_state": {
    "answer_bank": null,
    "detail": "Recorded: 59 workbook cells.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 59 recorded answers",
    "workbook_corpus": {
      "cells": 59,
      "matched": 59
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/text_format.rs#L921-L921"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/text_format::read_value",
        "catalogue/text_format::value",
        "catalogue/text_format::profile",
        "catalogue/text_format::rendered",
        "catalogue/text_format::text",
        "decimal::low32",
        "decimal::Natural::zero",
        "decimal::Natural::from_u64",
        "decimal::Natural::pow10",
        "decimal::Natural::normalize",
        "decimal::Natural::is_zero",
        "decimal::Natural::mul_add_small",
        "decimal::Natural::times_pow10",
        "decimal::Natural::times_pow5",
        "decimal::Natural::times_pow2",
        "decimal::ExactDecimal::read",
        "decimal::ExactDecimal::binary",
        "format/datetime::has_invalid_exponent",
        "format/datetime::looks_like_datetime_format",
        "format/datetime::without_subseconds",
        "format/datetime::render_with_datetime_tokens",
        "format/datetime::tokenize_datetime_format",
        "format/datetime::elapsed_token_at",
        "format/datetime::classify_minute_tokens",
        "format/datetime::token_kind",
        "format/datetime::is_time_neighbor",
        "format/datetime::push_literal",
        "format/datetime::render_datetime_literal",
        "format/datetime::format_elapsed",
        "format/datetime::TimeParts::from_serial",
        "format::measured_host",
        "format::currency_literal",
        "format::digits",
        "format::fifteen",
        "format::split",
        "format::grouped",
        "format::general",
        "format::significant",
        "format::sections",
        "format::bracket",
        "format::is_condition",
        "format::is_elapsed",
        "format::condition_holds",
        "format::condition_of",
        "format::strip_tokens",
        "format::choose",
        "format::items",
        "format::numeric",
        "format::literal_text",
        "format::integer_part",
        "format::fraction_part",
        "format::scientific",
        "format::fraction_code",
        "format::FractionCode::render",
        "format::mixed_fraction_under_space_grouping",
        "format::convergent",
        "format::text_declared_date_locale",
        "format::text",
        "format::text_of_text",
        "format/names::month_name",
        "format/names::weekday_name",
        "format/names::locale_names",
        "locale::LocaleId::from_bcp47_language_tag",
        "locale::LocaleId::from_excel_lcid",
        "locale::short_date_order",
        "locale::short_date_pattern",
        "locale::currency_placement",
        "locale::currency_spacing",
        "locale::currency_negative_pattern",
        "locale::format_profile",
        "locale::days_from_civil",
        "locale::civil_from_days",
        "locale::ymd_from_excel_serial",
        "number_text::decimal",
        "number_text::first_precision",
        "number_text::near_tie",
        "number_text::first_rounding",
        "number_text::rounded",
        "number_text::increment",
        "number_text::ascii",
        "ported/date_kernels::days_from_civil",
        "ported/date_kernels::civil_from_days",
        "ported/date_kernels::serial_unbounded_1900",
        "ported/date_kernels::ymd_1900",
        "ported/date_kernels::is_leap",
        "ported/date_kernels::days_in_month",
        "ported/date_kernels::whole_serial",
        "ported/date_kernels::whole",
        "ported/date_kernels::weekday_sunday_one_based",
        "ported/date_kernels::remap_weekday",
        "ported/date_kernels::weekday_of",
        "ported/date_kernels::weekday",
        "ported/text_kernels::text",
        "ported/text_kernels::text_from_str",
        "ported/text_kernels::date_integer_floor",
        "ported/text_kernels::push_singleton_or_original",
        "ported/text_kernels::push_upper",
        "ported/text_kernels::upper",
        "value_text::measured_host_reader",
        "value_text::measured_space",
        "value_text::read",
        "value_text::number",
        "value_text::decimal",
        "value_text::fraction",
        "value_text::tokens",
        "value_text::month_named",
        "value_text::time_at",
        "value_text::full_year",
        "value_text::valid_day",
        "value_text::this_year",
        "value_text::serial_1900",
        "value_text::date_of",
        "value_text::date_time"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/text_format.rs#L921-L921",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 59 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.VALUE.json",
  "name": "VALUE",
  "notes": [
    {
      "basis": "About 120 recorded zero-mantissa cases through ABS, and 72 through VALUE. All 72 VALUE readings fit a limit of -308 to 308 on the exponent as counted here.",
      "documentation": null,
      "evidence": [
        {
          "commit": "344c1667872a7d62669ca3044decb06c92b1e6f6",
          "locator": "recorded_zero_percentage_exponents_are_validated",
          "note": "recorded readings pinned",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "sheets qt097 to qt168",
          "note": "72 recorded VALUE readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.ABS",
        "FUNC.VALUE"
      ],
      "inferred": "The exponent formula is inferred, though it fits every reading; that functions other than ABS and VALUE share this conversion is inferred.",
      "kind": "excel-differs-from-math",
      "note_id": "FN-ABS-001",
      "open": [],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=ABS(\"0e-309\")",
          "correct": {
            "bits": "0x0000000000000000",
            "display": "0",
            "how": "The text denotes zero: a zero mantissa is 0 at any exponent.",
            "kind": "number"
          },
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111textbounds-00008-abs-boundary-2-0",
            "note": null,
            "path": "runs/w111-numeric-text-percent-bounds-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=ABS(\"0e-308\")",
          "correct": null,
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111textbounds-00012-abs-boundary-3-0",
            "note": null,
            "path": "runs/w111-numeric-text-percent-bounds-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=ABS(\"0e-307%\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111textbounds-00017-abs-boundary-4-1",
            "note": null,
            "path": "runs/w111-numeric-text-percent-bounds-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=ABS(\"0e309\")",
          "correct": {
            "bits": "0x0000000000000000",
            "display": "0",
            "how": "The text denotes zero: a zero mantissa is 0 at any exponent.",
            "kind": "number"
          },
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111textbounds-00028-abs-boundary-7-0",
            "note": null,
            "path": "runs/w111-numeric-text-percent-bounds-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=ABS(\"0.0e309\")",
          "correct": null,
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel build not recorded in this run; bulk captures of the same date (2026-09-29) record Excel 16.0 build 20430, Windows 64-bit, workbook compatibility 2",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111textbounds-00108-abs-boundary-27-0",
            "note": null,
            "path": "runs/w111-numeric-text-percent-bounds-20260929/outcomes/excel.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "=VALUE(\"0e-307\")",
          "correct": null,
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt099, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"0e-307%\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt100, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"0e309\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt107, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"0.0e309\")",
          "correct": null,
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt143, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"0e309%\")",
          "correct": null,
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt108, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"0e311%\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt112, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "Converting text to a number, measured through ABS and VALUE, rejects a zero mantissa with an out-of-range exponent: ABS(\"0e-309\") is #VALUE! though the text denotes 0, and ABS(\"0e-308\") is 0. The exponent counts as written, less the fraction digits, less 2 for a percent sign, so ABS(\"0.0e309\") is 0, ABS(\"0e309\") is #VALUE!, and ABS(\"0e-307%\") is #VALUE!.",
      "status": "measured",
      "title": "Text to number checks the exponent range even when the mantissa is zero"
    },
    {
      "basis": "66 recorded VALUE readings (all ten digits of each of the five scripts, then composed forms), 10 SQRT and 4 DATEVALUE readings.",
      "documentation": null,
      "evidence": [
        {
          "commit": "55697ab4f74bab852fef7bc76b08588c3a5f408e",
          "locator": "delivered_fn4_digit_scripts_and_numeric_date_widths",
          "note": "recorded answers pinned",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "sheets qt031 to qt096",
          "note": "66 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": null,
          "note": "10 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/SQRT.reading.json",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": null,
          "note": "6 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/DATEVALUE.reading.json",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.DATEVALUE",
        "FUNC.SQRT",
        "FUNC.VALUE"
      ],
      "inferred": "That other text-to-number routes, such as arithmetic operators, treat digits the same way is inferred from VALUE and SQRT agreeing.",
      "kind": "quirk",
      "note_id": "FN-VALUE-001",
      "open": [
        "Other digit blocks (Bengali, Tibetan, Khmer and so on) have not been read.",
        "Whether the set depends on the Windows or workbook locale has not been read."
      ],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=VALUE(\"١\")",
          "correct": null,
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt042, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"١٢٣\")",
          "correct": null,
          "excel": {
            "bits": "0x405ec00000000000",
            "display": "123",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt081, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"1٢3\")",
          "correct": null,
          "excel": {
            "bits": "0x405ec00000000000",
            "display": "123",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt084, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"١e2\")",
          "correct": null,
          "excel": {
            "bits": "0x4059000000000000",
            "display": "100",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt088, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"१\")",
          "correct": null,
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt062, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"๑\")",
          "correct": null,
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt072, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"１\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt032, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"1２3\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qt093, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-text-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=SQRT(\"۱٢३๔\")",
          "correct": null,
          "excel": {
            "bits": "0x4041906d51932c26",
            "display": "35.12833614050059",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-SQRT-digits-6",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/SQRT.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=DATEVALUE(\"٢٠٢٤-٠١-٠٢\")",
          "correct": null,
          "excel": {
            "bits": "0x40e61da000000000",
            "display": "45293",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-DATEVALUE-digits-1",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/DATEVALUE.reading.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "In the recorded en-ZA settings, converting text to a number accepts Arabic-Indic (U+0660 to U+0669), extended Arabic-Indic (U+06F0 to U+06F9), Devanagari (U+0966 to U+096F) and Thai (U+0E50 to U+0E59) digits. They work alone, in runs, with a decimal point, in the exponent, with a sign or percent, and mixed with ASCII digits or with each other: VALUE(\"1٢3\") is 123, and SQRT of a four-digit string using four scripts is the root of 1234. Fullwidth digits (U+FF10 to U+FF19) give #VALUE! alone or mixed. DATEVALUE reads the four accepted scripts in a date written year-month-day.",
      "status": "measured",
      "title": "Text to number reads Arabic, Persian, Devanagari and Thai digits, but not fullwidth digits"
    },
    {
      "basis": "45 recorded VALUE readings covering year, month and day tokens of one to five digits, and 2 DATEVALUE readings.",
      "documentation": null,
      "evidence": [
        {
          "commit": "55697ab4f74bab852fef7bc76b08588c3a5f408e",
          "locator": "delivered_fn4_digit_scripts_and_numeric_date_widths",
          "note": "recorded answers pinned",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "sheets ql041 to ql085",
          "note": "45 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.DATEVALUE",
        "FUNC.VALUE"
      ],
      "inferred": null,
      "kind": "quirk",
      "note_id": "FN-VALUE-002",
      "open": [
        "Three-digit years were not read.",
        "Other date orders and locales were not read."
      ],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=VALUE(\"2024/02/01\")",
          "correct": null,
          "excel": {
            "bits": "0x40e6216000000000",
            "display": "45323",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql078, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"2024/02/001\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql079, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"2024/002/01\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql081, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"1/2/1\")",
          "correct": null,
          "excel": {
            "bits": "0x40e2076000000000",
            "display": "36923",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql041, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"24/2/1\")",
          "correct": null,
          "excel": {
            "bits": "0x40e6216000000000",
            "display": "45323",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql065, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"0001/2/1\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql057, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"2024/02/0\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql084, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"2024-02-001\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet ql085, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-list-controls.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=DATEVALUE(\"2024-002-01\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-DATEVALUE-digits-5",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/DATEVALUE.reading.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "In a three-part numeric date, leading zeros are not free. VALUE(\"2024/02/01\") is 45323, but VALUE(\"2024/02/001\") and VALUE(\"2024/002/01\") are #VALUE!, and so is any month or day of three or more digits in the 45 forms read. A year of one, two or four digits is read: \"1/2/1\" and \"1/02/01\" are 2001-02-01, \"24/2/1\" is 2024-02-01, while \"0001/2/1\" is #VALUE!. Month 0 and day 0 give #VALUE!. The same limit holds with hyphens: \"2024-02-001\" through VALUE, and \"2024-002-01\" and \"2024-02-001\" through DATEVALUE, are #VALUE!. The settings of this run are en-ZA: decimal point, space as thousands separator, year-month-day date order.",
      "status": "measured",
      "title": "A date as text takes at most two digits for month and day"
    },
    {
      "basis": "21 recorded VALUE readings.",
      "documentation": null,
      "evidence": [
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "sheets q072 to q092",
          "note": "21 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "recorded_parenthesized_percent_text_keeps_its_suffix",
          "note": "the same parenthesised percent forms through INT",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.VALUE"
      ],
      "inferred": null,
      "kind": "quirk",
      "note_id": "FN-VALUE-003",
      "open": [
        "Why the euro sign is accepted in en-ZA settings, and \"$\" is not, is not known. The other locales have not been read."
      ],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=VALUE(\"(1)%\")",
          "correct": null,
          "excel": {
            "bits": "0xbf847ae147ae147b",
            "display": "-0.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q072, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"(%1)\")",
          "correct": null,
          "excel": {
            "bits": "0xbf847ae147ae147b",
            "display": "-0.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q075, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"%(1)\")",
          "correct": null,
          "excel": {
            "bits": "0xbf847ae147ae147b",
            "display": "-0.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q076, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"(1%)%\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q077, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"€1\")",
          "correct": null,
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q083, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"1€\")",
          "correct": null,
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q084, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"€(1)\")",
          "correct": null,
          "excel": {
            "bits": "0xbff0000000000000",
            "display": "-1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q089, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"€1%\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q090, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"$1\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q091, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=VALUE(\"£1\")",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet q092, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4.capture.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "VALUE reads parentheses as a negative sign and one percent sign in any of these places: \"(1)%\", \"(1) %\", \"(1%)\", \"(%1)\" and \"%(1)\" are all -0.01. A second percent sign, as in \"(1%)%\", \"%(1)%\" and \"(1)%%\", gives #VALUE!, as does trailing text. The euro sign is read as a currency sign in the recorded en-ZA settings: \"€1\", \"1€\", \"€ 1\", \"€-1\", \"-€1\", \"(€1)\" and \"€(1)\" are 1 or -1. \"$1\" and \"£1\" are #VALUE! there. Currency and percent do not combine: \"€1%\", \"(€1)%\" and \"(R1)%\" are #VALUE!.",
      "status": "measured",
      "title": "VALUE takes one percent sign anywhere around parentheses, and a euro sign but not a dollar"
    }
  ],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n### Relationships\n\n\n- `TEXT` — the opposite direction, and the function `VALUE` is usually paired with. `TEXT` is\n  equally locale-dependent, in the format-string argument as well as the output, which means a\n  `VALUE(TEXT(x, fmt))` round trip is doubly exposed to locale.\n- `NUMBERVALUE` — the function you probably want. It takes explicit decimal and group separator\n  arguments, which removes the ambient-locale dependency that makes `VALUE` non-portable.\n  `NUMBERVALUE` does not supersede `VALUE` in Microsoft's catalogue and both remain current, but\n  for any workbook that travels between machines, `NUMBERVALUE` is the safer instrument. Upstream\n  notes that `NUMBERVALUE`'s own locale-default lanes are separately blocked and unresolved, so it\n  is not a free lunch either.\n- `--` (double unary minus) and `+0` are the idiomatic shorthands for text-to-number coercion. They\n  go through the *general* to-number rule described in\n  [coercion and lifting](../model/02-coercion-and-lifting.md), not through `VALUE`'s parser, so\n  they are not interchangeable with `VALUE` — most visibly for logicals.\n- `DATEVALUE` and `TIMEVALUE` — the specialised parsers for the date and time lanes that `VALUE`\n  also happens to cover. When you know you have a date, they say so in the formula and are easier\n  to reason about.\n- `VALUETOTEXT` is *not* the inverse of `VALUE` despite the name symmetry; see\n  [`VALUETOTEXT`](FUNC.VALUETOTEXT.md), which renders any value as text for display or for\n  formula-bar round-tripping.\n- `ISNUMBER(VALUE(x))` is the common \"does this parse\" test, and it inherits every locale question\n  on this page.\n\n\n",
    "how-to-implement": "\n### Notes for implementers\n\n\n- **Make the locale an explicit input, not ambient state.** Upstream's design — a locale-profile\n  seam queried from the host, with the parser written against the profile — is the right shape.\n  A parser that reads the process locale at call time is untestable and irreproducible.\n- **Do not use the host language's number parser.** `strtod`, `double.Parse`, and `f64::from_str`\n  each accept things Excel does not (hex floats, `inf`, `nan`, underscores in some languages) and\n  reject things Excel does (currency symbols, percent, grouped digits). Every one of those\n  mismatches is a silent divergence.\n- **Reject non-finite parses.** The shared rule is explicit: text that parses to an overflow is\n  non-numeric, not infinite.\n- **Keep the date lane separate from the number lane**, and be prepared for the two to disagree\n  about the same string — `\"1.5\"` as a number and as a date are both plausible readings, and the\n  precedence between them is a real decision that must be recorded.\n- **Percent must compose with grouping** rather than being a separate grammar, but it does not\n  combine with currency: `\"€1%\"` is `#VALUE!` in the recorded en-ZA settings (FN-VALUE-003). It\n  also counts toward the exponent range check: `\"0e-307\"` is 0 but `\"0e-307%\"` is `#VALUE!`\n  (FN-ABS-001).\n- **Round once.** Parse to the exact decimal value and round to the nearest double a single time;\n  parsing digit-by-digit with accumulating multiplication introduces error that no test of small\n  numerals will catch. Excel also checks the exponent range when the mantissa is zero, so\n  `\"0e309\"` is `#VALUE!` (FN-ABS-001).\n\n\n",
    "quirks": "\n### Result and edge cases\n\n\nThe return kind is `Number`.\n\nEdges that matter in practice:\n\n- **Percent text divides.** If `\"50%\"` is accepted, the result is `0.5`, not `50`. A pipeline that\n  parses percentages with `VALUE` and then divides by 100 is wrong by a factor of 100 exactly when\n  the parse succeeds.\n- **Date and time text returns serials.** Time text returns a fraction of a day. `VALUE(\"12:00\")`\n  is `0.5` if accepted.\n- **Overflow is not infinity.** The shared coercion rule states that text parsing must produce a\n  finite number; text denoting an overflow is treated as non-numeric rather than as infinity.\n- **Precision is the parser's, not the text's.** `VALUE` of a 30-digit numeral returns the nearest\n  double, silently. Round-tripping through `TEXT` and back is lossy in both directions and the\n  losses do not cancel.\n- **Arrays.** Whether `VALUE` lifts over an array argument is not something this page asserts; the\n  general rules are in [coercion and lifting](../model/02-coercion-and-lifting.md), and the\n  specific answer for `VALUE` is listed as an open probe below.\n- **Errors propagate.**\n\n\n\n### Errors\n\n\nMicrosoft's page is the authority on the documented error conditions and is linked below; it was\nnot retrievable while this entry was written, so this section states expectations rather than\nquoting it.\n\n| Error | Status |\n|---|---|\n| `#VALUE!` when the text is not in a recognised numeric or date/time format | expected; this is the function's characteristic failure |\n| `#VALUE!` for logical, blank, and unsupported argument kinds | recorded upstream for its admitted slice; not a Handbook claim, and notably stricter than general to-number coercion |\n| any error value, propagated from the argument | follows from the universal error-propagation rule |\n\nNote what *is not* here: there is no error for precision loss, and none for a value that parses but\nmeans something other than what the author intended. `VALUE` fails loudly or succeeds silently.\n\n\n",
    "sources": "- Microsoft Support, VALUE function —\n  <https://support.microsoft.com/en-us/office/value-function-257d0108-07dc-437d-ae1c-bc2d3953d8c2>\n  (the authority for signature, description and documented errors; not retrievable while this entry\n  was written, so it is cited by reference and nothing here paraphrases it).\n- Handbook `content/model/02-coercion-and-lifting.md` — the general to-number rule, the\n  finite-parse requirement, and the explicit statement that the locale-dependent recognition\n  surface is an open area.\n- Handbook `content/model/01-value-universe.md` — Empty versus Missing, and the `Number` kind.\n\n",
    "version-differences": "No comparison between specific Excel builds is recorded here yet. This does not establish that all builds behave alike.",
    "what-it-does": "\n`VALUE` parses text into a number.\n\nIt is tempting to describe this as \"the inverse of `TEXT`\", and that is the right intuition, but\nthe honest description is narrower and stranger: **`VALUE` accepts the text forms that Excel itself\nwould recognise as a number if you typed them into a cell, under the current locale, and returns\nthe number they denote.** That is not a fixed grammar. It is a grammar parameterised by the\nmachine's regional settings.\n\nThe forms in play include, at minimum: plain decimals, scientific notation, digit-group separators,\na currency symbol, a percent sign, and date and time text. Each of those brings a locale\ndependency:\n\n- the **decimal separator** is `.` in some locales and `,` in others, which means `\"1,5\"` is one\n  and a half in one place and fifteen — or a rejection — in another;\n- the **group separator** is the mirror image of that problem, and a space in several locales;\n- the **currency symbol** is per-locale, and `VALUE` accepting `\"$1.00\"` says nothing about whether\n  it accepts `\"€1,00\"`; in the recorded en-ZA settings `\"€1\"` is read and `\"$1\"` is not\n  (FN-VALUE-003);\n- **date text** is the worst case, because `\"1/2/2024\"` denotes two different days in two locales\n  and returns a *serial number*, not the digits you can see.\n\nThe Handbook's shared coercion chapter already draws this boundary: it pins the plain-number core\nand states that the locale-dependent surface — separators, currency, percent, date and time text —\nis an open area. See [coercion and lifting](../model/02-coercion-and-lifting.md). `VALUE` is the\nfunction where that open area is the entire subject matter.\n\nTwo structural facts finish the definition. A number arriving as the argument passes through\nunchanged. And a successful date-text parse returns the date's **serial number** — a plain\n`Number`, formatting-free — which is why `VALUE(\"2024-01-02\")` shows as a large integer unless the\ncell is formatted as a date.\n\n\n\n### Arguments\n\n\n`VALUE(text)`\n\n| Argument | Required | Meaning |\n|---|---|---|\n| `text` | yes | The text to convert to a number. |\n\nOne argument. The subtleties are all about what may occupy it:\n\n- **Already-numeric input** passes through. `VALUE(5)` is `5`.\n- **Logicals** are the surprising rejection: upstream's contract records logical, blank, missing,\n  and unsupported aggregate or reference payloads as `#VALUE!` in its admitted slice — so `VALUE`\n  is *stricter* than the general to-number coercion, which maps `TRUE` to `1`. That is a real\n  difference between `VALUE(TRUE)` and `SUM(TRUE)`, and it is upstream's recorded behaviour rather\n  than a Handbook finding.\n- **Leading and trailing whitespace** is ignored by the general to-number rule; whether `VALUE`\n  matches that exactly, and whether a whitespace-only string is rejected as upstream records, is\n  worth confirming rather than assuming.\n- **An empty referenced cell** delivers `Empty`, which is a distinct outcome from an omitted\n  argument; see [the value universe](../model/01-value-universe.md).\n\n\n"
  },
  "signature": {
    "display": "VALUE(text)",
    "parameters": [
      {
        "description": null,
        "name": "text",
        "optional": false,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 1,
        "min": 1
      },
      "category": "Text functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "LocaleProfile",
        "host_interaction_class": "None",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "Composite",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Number read from text",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Converts a text argument to a number",
        "microsoft_url": "https://support.microsoft.com/en-us/office/value-function-257d0108-07dc-437d-ae1c-bc2d3953d8c2"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "VALUE"
        },
        {
          "locale": "bg-BG",
          "name": "VALUE"
        },
        {
          "locale": "cs-CZ",
          "name": "VALUE"
        },
        {
          "locale": "da-DK",
          "name": "VALUE"
        },
        {
          "locale": "de-DE",
          "name": "VALUE"
        },
        {
          "locale": "el-GR",
          "name": "VALUE"
        },
        {
          "locale": "en-AU",
          "name": "VALUE"
        },
        {
          "locale": "en-GB",
          "name": "VALUE"
        },
        {
          "locale": "en-US",
          "name": "VALUE"
        },
        {
          "locale": "es-ES",
          "name": "VALUE"
        },
        {
          "locale": "et-EE",
          "name": "VALUE"
        },
        {
          "locale": "fi-FI",
          "name": "ARVO"
        },
        {
          "locale": "fr-FR",
          "name": "VALUE"
        },
        {
          "locale": "he-IL",
          "name": "VALUE"
        },
        {
          "locale": "hr-HR",
          "name": "VALUE"
        },
        {
          "locale": "hu-HU",
          "name": "VALUE"
        },
        {
          "locale": "id-ID",
          "name": "VALUE"
        },
        {
          "locale": "it-IT",
          "name": "VALORE"
        },
        {
          "locale": "ja-JP",
          "name": "VALUE"
        },
        {
          "locale": "ko-KR",
          "name": "VALUE"
        },
        {
          "locale": "lt-LT",
          "name": "VALUE"
        },
        {
          "locale": "lv-LV",
          "name": "VALUE"
        },
        {
          "locale": "nb-NO",
          "name": "VALUE"
        },
        {
          "locale": "nl-NL",
          "name": "VALUE"
        },
        {
          "locale": "pl-PL",
          "name": "VALUE"
        },
        {
          "locale": "pt-BR",
          "name": "VALUE"
        },
        {
          "locale": "pt-PT",
          "name": "VALUE"
        },
        {
          "locale": "ro-RO",
          "name": "VALUE"
        },
        {
          "locale": "ru-RU",
          "name": "VALUE"
        },
        {
          "locale": "sk-SK",
          "name": "VALUE"
        },
        {
          "locale": "sl-SI",
          "name": "VALUE"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "VALUE"
        },
        {
          "locale": "sv-SE",
          "name": "VALUE"
        },
        {
          "locale": "th-TH",
          "name": "VALUE"
        },
        {
          "locale": "tr-TR",
          "name": "SAYIYAÇEVİR"
        },
        {
          "locale": "uk-UA",
          "name": "VALUE"
        },
        {
          "locale": "vi-VN",
          "name": "VALUE"
        },
        {
          "locale": "zh-CN",
          "name": "VALUE"
        },
        {
          "locale": "zh-HK",
          "name": "VALUE"
        },
        {
          "locale": "zh-TW",
          "name": "VALUE"
        }
      ],
      "signature": {
        "display": "VALUE(text)",
        "parameters": [
          {
            "description": null,
            "name": "text",
            "optional": false,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "VALUE",
      "version_marker": null,
      "xlcall": {
        "code": "33",
        "symbol": "xlfValue"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/value-function-257d0108-07dc-437d-ae1c-bc2d3953d8c2"
  },
  "try_it": {
    "formula": "=VALUE(\"1234.5\")"
  },
  "url": "https://handbook.dnacalc.com/functions/VALUE.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "=VALUE(\"0e-307\") returned 0 (0x0000000000000000). =VALUE(\"0e-307%\") returned #VALUE!. 30 further recorded controls are attached. Inputs were supplied through formula literals. These are controls from this environment, not a same-input comparison with another build.",
      "excel_build": "16.0.20527.20088",
      "observations": [
        {
          "call": "=VALUE(\"0e-307\")",
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"0e-307%\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"0e309\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"0.0e309\")",
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"0e309%\")",
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"0e311%\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"١\")",
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"١٢٣\")",
          "excel": {
            "bits": "0x405ec00000000000",
            "display": "123",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"1٢3\")",
          "excel": {
            "bits": "0x405ec00000000000",
            "display": "123",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"١e2\")",
          "excel": {
            "bits": "0x4059000000000000",
            "display": "100",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"१\")",
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"๑\")",
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"１\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"1２3\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"2024/02/01\")",
          "excel": {
            "bits": "0x40e6216000000000",
            "display": "45323",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"2024/02/001\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"2024/002/01\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"1/2/1\")",
          "excel": {
            "bits": "0x40e2076000000000",
            "display": "36923",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"24/2/1\")",
          "excel": {
            "bits": "0x40e6216000000000",
            "display": "45323",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"0001/2/1\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"2024/02/0\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"2024-02-001\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"(1)%\")",
          "excel": {
            "bits": "0xbf847ae147ae147b",
            "display": "-0.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"(%1)\")",
          "excel": {
            "bits": "0xbf847ae147ae147b",
            "display": "-0.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"%(1)\")",
          "excel": {
            "bits": "0xbf847ae147ae147b",
            "display": "-0.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"(1%)%\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"€1\")",
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"1€\")",
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"€(1)\")",
          "excel": {
            "bits": "0xbff0000000000000",
            "display": "-1",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"€1%\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"$1\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=VALUE(\"£1\")",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        }
      ],
      "platform": "Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-ABS-001.json",
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-VALUE-001.json",
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-VALUE-002.json",
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-VALUE-003.json"
      ]
    }
  ]
}