Excel 16.0 build 20430
Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics
2,406 captured inputs are indexed for this environment. Capture dates: 2026-09-24 to 2026-09-25. This is a reading count, not a comparison with another build.
Financial functions
Matches all 4,853 recorded answers
Recorded: 4,847 in the answer bank and 6 workbook cells. How we measure this · See the Rust code
| Language | Name in Excel |
|---|---|
| Arabic | DOLLARDE |
| Bulgarian | DOLLARDE |
| Czech | DOLLARDE |
| Danish | KR.DECIMAL |
| German | DOLLARDE |
| Greek | DOLLARDE |
| English (Australia) | DOLLARDE |
| English (United Kingdom) | DOLLARDE |
| English (United States) | DOLLARDE |
| Spanish | MONEDA.DEC |
| Estonian | DOLLARDE |
| Finnish | VALUUTTA.DES |
| French | PRIX.DEC |
| Hebrew | DOLLARDE |
| Croatian | DOLLARDE |
| Hungarian | FORINT.DEC |
| Indonesian | DOLLARDE |
| Italian | DOLLARDE |
| Japanese | DOLLARDE |
| Korean | DOLLARDE |
| Lithuanian | DOLLARDE |
| Latvian | DOLLARDE |
| Norwegian | DOLLARDE |
| Dutch | DOLLAR.DE |
| Polish | CENA.DZIES |
| Portuguese (Brazil) | DOLLARDE |
| Portuguese (Portugal) | MOEDADEC |
| Romanian | DOLLARDE |
| Russian | РУБЛЬ.ДЕС |
| Slovak | DOLLARDE |
| Slovenian | DOLLARDE |
| Serbian (Latin) | DOLLARDE |
| Swedish | DECTAL |
| Thai | DOLLARDE |
| Turkish | LİRAON işlevi |
| Ukrainian | DOLLARDE |
| Vietnamese | DOLLARDE |
| Chinese (Simplified) | DOLLARDE |
| Chinese (Hong Kong) | DOLLARDE |
| Chinese (Traditional) | DOLLARDE |
Names from Microsoft's support site.
DOLLARDE(fractional_dollar, fraction)
DOLLARDE(fractional_dollar, fraction) converts a price written in fractional notation — the
form US bond and note markets have quoted in for two centuries — into an ordinary decimal number.
A quote of 1.02 in thirty-seconds is not "one and two hundredths". It is one dollar and two
thirty-seconds, and the .02 is a two-digit field holding the numerator. DOLLARDE(1.02, 32)
is therefore 1 + 2/32 = 1.0625.
The transformation is:
whole = trunc(fractional_dollar)
frac_field = fractional_dollar − whole
result = whole + frac_field × scale / fraction
where fraction is the denominator (truncated to an integer) and scale is the power of ten that
shifts the digit field up to a whole numerator. The value of scale is determined by how many
decimal digits the denominator has, and that is the whole subtlety of the function:
fraction | Digits | scale | DOLLARDE(1.02, fraction) |
|---|---|---|---|
| 8 | 1 | 10 | 1 + 0.2/8 = 1.025 |
| 16 | 2 | 100 | 1 + 2/16 = 1.125 |
| 32 | 2 | 100 | 1 + 2/32 = 1.0625 |
So the number of digits you write after the point is not free notation — it must match the width
the denominator implies. DOLLARDE(1.2, 32) is 1 + 20/32, not 1 + 2/32, because the field is
two digits wide and .2 means 20. This is the single most common misreading of the function, and
it produces a plausible wrong answer rather than an error.
Range: for a well-formed quote the fractional field is in [0, fraction) and the result lies
between whole and whole + 1. Nothing enforces that. DOLLARDE(1.99, 32) computes
1 + 99/32 ≈ 4.094 without complaint: the "fraction" was larger than the denominator, and the
function has no notion of a malformed quote.
Negative inputs work by symmetry, because both the truncation and the subtraction are toward zero:
DOLLARDE(−1.02, 32) = −1.0625.
| Argument | Meaning | Default |
|---|---|---|
fractional_dollar | A number expressed as an integer part and a fraction part, separated by a decimal symbol. Required. | — |
fraction | The integer to use in the denominator of the fraction. Required. | — |
Microsoft documents that if fraction is not an integer, it is truncated. In practice this
means DOLLARDE(1.02, 16.9) is read as sixteenths.
fraction is not restricted to powers of two by anything in the function, even though halves,
quarters, eighths, sixteenths, thirty-seconds and sixty-fourths are the only denominators the
market convention uses. A denominator of 3 or 7 is accepted and produces arithmetic that is
internally consistent but does not correspond to any quotation.
Both slots are numeric and go through this family's own coercion, which is narrower than the general rule — see Result and edge cases.
Returns Number.
fraction is truncated, not rounded, so 15.99 reads as 15, not as 16. Truncation is
toward zero.0 and produces #DIV/0! rather than a
missing-argument diagnosis.DOLLARDE is declared as lifting natively over arrays, while its inverse
DOLLARFR is declared with an explicit broadcast over both argument positions. See
DOLLARFR — the asymmetry between two functions that are inverses of each
other is itself a finding.As documented on Microsoft's DOLLARDE page:
| Error | Condition |
|---|---|
#NUM! | fraction < 0 |
#DIV/0! | fraction ≥ 0 and fraction < 1 |
The arithmetic is exact for the cases that matter, and the one interesting question is not rounding but specification.
fraction | digit-count rule | ceil(log10) rule |
|---|---|---|
| 16 | scale = 100 | scale = 100 |
| 10 | scale = 100 | scale = 10 |
| 100 | scale = 1000 | scale = 100 |
For DOLLARDE(1.5, 10) the first rule gives 1 + 0.5·100/10 = 6 and the second gives
1 + 0.5·10/10 = 1.5. That is not a last-bit difference; it is a different function. Which one
Excel implements is not settled by this page, and DOLLARDE(1.5, 10) is the cheapest probe in
this whole batch. Power-of-ten denominators are outside market convention, which is presumably why
the ambiguity has survived.
Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.
DOLLARDE · 6 lines · calc-func/src/catalogue/financial.rs on GitHub28 dollarde_fn "DOLLARDE" (2, 2) [V "fractional_dollar", V "fraction"] |s, a, sv| {
if a.iter().any(CalcValue::is_missing) {
return fail(W::NA);
}
out(s, dollar::dollarde_kernel(dollar_num(s, a, 0)?, dollar_num(s, a, 1)?))
}
dollarde_kernel · 7 lines · calc-func/src/ported/dollar_fraction_family.rs on GitHubpub fn dollarde_kernel(number: f64, fraction: f64) -> Result<f64, WorksheetErrorCode> {
let denominator = normalized_fraction_denominator(fraction)?;
let scale = decimal_scale(denominator);
let whole = number.trunc();
let fractional = number - whole;
Ok(whole + fractional * scale / denominator)
}
dollar_num catalogue/financialnormalized_fraction_denominator ported/dollar_fraction_familydecimal_scale ported/dollar_fraction_familyNo implementation has been published with a Handbook test suite for this function.
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.
| Excel 16.0 build | Platform and CPU | Captured inputs |
|---|---|---|
| 20430 | Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics | 2,406 |
| 20430 | Windows, 64-bit, CPU not recorded | 1,235 |
The 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.
Recorded environments and comparison details.
Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics
2,406 captured inputs are indexed for this environment. Capture dates: 2026-09-24 to 2026-09-25. This is a reading count, not a comparison with another build.
Windows, 64-bit, CPU not recorded
1,235 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.
DOLLARFR(DOLLARDE(x, f), f) should return x up to floating-point rounding, and the round trip
is a good self-test of the scaling rule.DOLLAR — unrelated despite the name. DOLLAR formats a number as currency text;
DOLLARDE returns a number. They share four letters and nothing else.TEXT — the general formatter, and the tool you actually want if the goal is to display a
price in fractional notation rather than to compute with one. Excel's # ?/32 number formats
cover the display direction.PRICE / PRICEDISC — the bond-pricing functions whose output is a decimal price per 100.
DOLLARFR is what turns their answer into a market quote; DOLLARDE turns a market quote into
something they can consume.No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents