{
  "category": "Math and trigonometry functions",
  "display_name": "FLOOR.PRECISE",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.FLOOR.PRECISE",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20430"
      ],
      "larger_numeric": 2,
      "last_bit": 0,
      "matched": 1323,
      "other_mismatch": 0,
      "refused": 10,
      "rows": 1335,
      "unread": 0,
      "worst_ulp": 4611686018427387904
    },
    "detail": "Of 1,399 recorded answers (1,335 in the answer bank and 64 workbook cells), 12 do not match: 2 differ by more than 16 ULP, 10 are refused.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "differs",
    "state_label": "Known larger differences",
    "summary": "Known larger differences on 12 of 1,399 recorded answers",
    "workbook_corpus": {
      "cells": 64,
      "matched": 64
    }
  },
  "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/rounding_more.rs#L45-L47",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/ceiling_floor_family.rs#L91-L93"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/rounding_more::two",
        "ported/ceiling_floor_family::excel_quotient",
        "ported/ceiling_floor_family::normalize_zero",
        "ported/ceiling_floor_family::floor_math_kernel"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/rounding_more.rs#L45-L47",
      "state": "differs",
      "suite": null,
      "summary": "Known larger differences on 12 of 1,399 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.FLOOR.PRECISE.json",
  "name": "FLOOR.PRECISE",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[MROUND](FUNC.MROUND.md) chooses a nearest multiple; [ROUNDUP](FUNC.ROUNDUP.md) and [ROUNDDOWN](FUNC.ROUNDDOWN.md) address decimal positions. [CEILING.MATH](FUNC.CEILING.MATH.md) provides the other directional family.\n\n\n",
    "how-to-implement": "\n1. Read the number and apply the omitted significance default of one. Set `s=abs(significance)` and return positive zero for s equal to zero.\n2. Compute the current [fifteen-significant-digit quotient reading](FUNC.CEILING.md#how-to-implement) using ordinary binary64 division, nearest/even decimal quantization and conversion back to binary64.\n3. Take the floor of the signed quotient `number/s`. The current helper expresses the negative branch using a positive magnitude quotient and the opposite integer direction, then restores the sign.\n4. Multiply the selected count by s with the ported helper’s ordinary binary64 multiplication, normalize zero and apply worksheet number publication.\n\nFor `number=-10.3,s=3`, the magnitude quotient is near `3.43333333333333`. Choosing four steps gives `-12`. Do not infer the significance sign from the input’s sign; this spelling discards it.\n\nThis branch outline follows the current scalar helper, with the quotient-reading primitive linked above. The exact modern-spelling edge transfer remains open in [FN-FLOOR-002](../notes/FN-FLOOR-002.json); a shared helper does not prove that Excel privately uses the same program for every spelling.\n\n\n",
    "quirks": "\nThe absolute significance is used, including for negative numbers. A zero number or zero significance returns zero. The current wrapper uses a default of one when significance is omitted at the end of the call; an explicitly empty significance slot is read as zero.\n\nThe PRECISE spelling does not establish a correctly rounded mathematical result on every input. The current helper applies a fifteen-digit reading to the quotient before choosing the integer count. The legacy FLOOR measurements do not establish all transferred modern-family boundaries; preserve that limitation.\n\n\n",
    "sources": "\n- [Microsoft: FLOOR.PRECISE function](https://support.microsoft.com/en-us/excel/functions/floor-precise-function), opened 6 November 2026; syntax, documented argument rules and errors.\n- [DnaCalc implementation](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/rounding.rs); implementation steps and the limits identified in the text.\n- [Quotient reading and sign helpers](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/ported/ceiling_floor_family.rs).\n- [Modern wrapper defaults](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/rounding_more.rs).\n\n",
    "try-it": "\n`=FLOOR.PRECISE(-10.3,-3)` returns `-12`. Changing the significance to positive three gives the same value: the step magnitude controls the grid, while the function chooses the direction.\n\n`=FLOOR.PRECISE(31.2,3)` returns `30`. These ordinary examples separate the direction from the significance sign.\n\n\n",
    "version-differences": "The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.\n\n| Excel 16.0 build | Platform and CPU | Captured inputs |\n|---|---|---:|\n| 20430 | Windows, 64-bit, CPU not recorded | 1,335 |\n\nThe record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.\n\n[Recorded environments and comparison details](https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.FLOOR.PRECISE.json).",
    "what-it-does": "\n`FLOOR.PRECISE(number,[significance])` rounds to a multiple of the absolute step, toward negative infinity in the mathematical convention. The default step is one. The significance sign is ignored and this spelling has no mode argument. Its current quotient-reading approximation is described below.\n\n\n"
  },
  "signature": {
    "display": "FLOOR.PRECISE(number, [significance])",
    "parameters": [
      {
        "description": null,
        "name": "number",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "significance",
        "optional": true,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 2,
        "min": 1
      },
      "category": "Math and trigonometry functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "RefOnly",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Number rounded down toward minus infinity to a multiple of the significance, whatever its sign",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Rounds a number down to the nearest integer or to the nearest multiple of significance. Regardless of the sign of the number, the number is rounded down.",
        "microsoft_url": "https://support.microsoft.com/en-us/office/floor-precise-function-f769b468-1452-4617-8dc3-02f842a0702e"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "bg-BG",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "cs-CZ",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "da-DK",
          "name": "AFRUND.GULV.PRECISE"
        },
        {
          "locale": "de-DE",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "el-GR",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "en-AU",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "en-GB",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "en-US",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "es-ES",
          "name": "MULTIPLO.INFERIOR.EXACTO"
        },
        {
          "locale": "et-EE",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "fi-FI",
          "name": "PYÖRISTÄ.KERR.ALAS.TARKKA"
        },
        {
          "locale": "fr-FR",
          "name": "PLANCHER.PRECIS*"
        },
        {
          "locale": "he-IL",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "hr-HR",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "hu-HU",
          "name": "PADLÓ.PONTOS"
        },
        {
          "locale": "id-ID",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "it-IT",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "ja-JP",
          "name": "FLOOR_PRECISE"
        },
        {
          "locale": "ko-KR",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "lt-LT",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "lv-LV",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "nb-NO",
          "name": "AVRUND.GJELDENDE.MULTIPLUM.NED.PRESIS"
        },
        {
          "locale": "nl-NL",
          "name": "AFRONDEN.BENEDEN.NAUWKEURIG"
        },
        {
          "locale": "pl-PL",
          "name": "ZAOKR.W.DÓŁ.DOKŁ"
        },
        {
          "locale": "pt-BR",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "pt-PT",
          "name": "ARRED.DEFEITO.PRECISO"
        },
        {
          "locale": "ro-RO",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "ru-RU",
          "name": "ОКРВНИЗ.ТОЧН"
        },
        {
          "locale": "sk-SK",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "sl-SI",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "sv-SE",
          "name": "RUNDA.NER.EXAKT"
        },
        {
          "locale": "th-TH",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "tr-TR",
          "name": "TABANAYUVARLA.DUYARLI"
        },
        {
          "locale": "uk-UA",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "vi-VN",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "zh-CN",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "zh-HK",
          "name": "FLOOR.PRECISE"
        },
        {
          "locale": "zh-TW",
          "name": "FLOOR.PRECISE"
        }
      ],
      "signature": {
        "display": "FLOOR.PRECISE(number, [significance])",
        "parameters": [
          {
            "description": null,
            "name": "number",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "significance",
            "optional": true,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "FLOOR.PRECISE",
      "version_marker": null,
      "xlcall": {
        "code": "547",
        "symbol": "xlfFloor_precise"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/floor-precise-function-f769b468-1452-4617-8dc3-02f842a0702e"
  },
  "try_it": {
    "formula": "=FLOOR.PRECISE(-10.3,-3)"
  },
  "url": "https://handbook.dnacalc.com/functions/FLOOR.PRECISE.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "1,335 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.",
      "excel_build": "16.0 build 20430",
      "platform": "Windows, 64-bit, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.FLOOR.PRECISE.json"
      ]
    }
  ]
}