Skip to content

IsMachineNumber ​

Whether expr is an ordinary (not extended-precision) inexact number.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageMachineNumberQ✓
IsMachineNumber(expr)TrueTrue for an inexact number carrying at most 17 significant decimal digits, FalseFalse otherwise (including every exact number).
Typed signatures
TypePackageApplies
(any) -> booleancombinatoricsalways

Domain: Collections

Details
  • Wolfram spells this MachineNumberQ; renamed to the Is… convention used across compute-engine predicates.
  • Compute engine keeps no separate "machine" number representation — every inexact value is a decimal carrying as many digits as it was given — so this is approximated by digit count: a literal of up to 17 digits, as Wolfram reads it, is a machine number.

Examples

Basic #
live ↗
InIsMachineNumber(2.5)\mathrm{IsMachineNumber}(2.5)OutTrue\mathrm{True}

An exact symbolic expression is not a floating-point value

live ↗
InIsMachineNumber(sin⁡(1 000))\mathrm{IsMachineNumber}(\sin(1\,000))OutFalse\mathrm{False}
live ↗
InIsMachineNumber(e1 000)\mathrm{IsMachineNumber}(e^{1\,000})OutFalse\mathrm{False}
Scope #

Exact numbers are never machine numbers

live ↗
InIsMachineNumber(2)\mathrm{IsMachineNumber}(2)OutFalse\mathrm{False}

An exact integer is not a machine number

live ↗
InIsMachineNumber(1)\mathrm{IsMachineNumber}(1)OutFalse\mathrm{False}
live ↗
InIsMachineNumber(1+i×101 000)\mathrm{IsMachineNumber}(1+i×10^{1\,000})OutFalse\mathrm{False}
Possible issues #

A 16-digit literal still fits a double

live ↗
InIsMachineNumber(3.141 592 653 589 793)\mathrm{IsMachineNumber}(3.141\,592\,653\,589\,793)OutTrue\mathrm{True}

A symbol is not a machine number

live ↗
InIsMachineNumber(x)\mathrm{IsMachineNumber}(x)OutFalse\mathrm{False}
About
Examples8
Checked againstWolfram Language 8 agree
CrosswalkWolfram Language

See also: IsNumeric, Precision