← All guides

ISNUMBER treats TRUE/FALSE differently in LibreOffice than in Excel

Excel classifies a logical value as its own type, distinct from a number, so =ISNUMBER(TRUE) returns FALSE. LibreOffice Calc returns TRUE for the same call. A formula that branches on ISNUMBER can therefore take the opposite path in each app, with no error to flag it.

The surprise

A boolean participates in arithmetic as 1 or 0 everywhere, but Excel still does not consider it a number for type tests. LibreOffice does. So ISNUMBER of the same TRUE flips between the two.

A minimal example

FormulaExcel, desktop (documented)Google Sheets (executed 2026-08-29)LibreOffice Calc 25.8.7.3 (executed)
=ISNUMBER(TRUE)FALSEFALSETRUE

FALSE is the documented-expected value in our test corpus; TRUE is what our harness computed by recalculating in LibreOffice Calc 25.8.7.3. Google Sheets was executed too — Drive import, 2026-08-29 — and returns FALSE, matching Excel. Excel for the web — a separate application from the desktop product, and the third engine we execute — also returned FALSE when we recalculated the corpus on OneDrive on 2026-09-01, so the documented answer is a measured one in a Microsoft engine too. LibreOffice is the only one of the four columns that says TRUE.

Why it happens

Microsoft's IS-functions documentation names ISLOGICAL as the dedicated test for a TRUE/FALSE value and states that the value arguments to these functions "are not converted," which places a logical in its own type, separate from numbers. Under that type system ISNUMBER of a logical is FALSE, and that is the long-established result our corpus records for Excel. LibreOffice, which our harness executes, evaluates a boolean as a number in this test and returns TRUE. The Microsoft docs do not print an explicit ISNUMBER(TRUE) example, so we are careful to attribute the FALSE result to the documented type separation rather than a single worked example. See Microsoft's IS functions reference.

How to migrate safely

If a formula uses ISNUMBER to detect a real number, add an explicit logical guard so it behaves the same in every engine:

=AND(ISNUMBER(A1),NOT(ISLOGICAL(A1)))

If you actually want to detect a boolean, test it directly with =ISLOGICAL(A1) rather than leaning on ISNUMBER's answer.

The practical damage shows up in validation checks and dashboards. A guard like =IF(ISNUMBER(A1),A1*rate,0) quietly skips a boolean input in Excel but multiplies it as 1 in LibreOffice, so a computed total can change with no error and no obvious cause. Auditing any workbook whose logic keys off ISNUMBER on cells that might hold TRUE/FALSE is worthwhile before you move it, because the branch can silently invert.

Check before you migrate

A note on which Excel this is. The Excel column in the tables above is Microsoft’s documented behaviour for desktop Excel, as recorded in our test corpus — we do not run desktop Excel, and no value in that column is a measurement. Excel for the web is a different application with its own calculation engine, and that one we do run (recalculated on OneDrive, 2026-09-01). Its measured results are published on each function’s own page rather than in these guide tables. Because we have no desktop run to compare against, a disagreement between an Excel-web measurement and the documented column is genuinely ambiguous: it may mean the web engine diverges from the desktop one, or that the documentation is wrong about both. We do not claim to know which.