josdejong / josdejong/mathjs

Avoid unnecessary parentheses for Units with complex value when using `format`

Open
#3,614 4 comments 0 reactions 0 assignees View on GitHub
category:units feature help wanted
Dominant language
JavaScript
Stars
15.1k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
Some units are considered complex units, meaning they are treated differently to normal, "numeric" units.
This for example is the case for the volt-ampere reactive, considered to be `VAR` by mathjs.

**To Reproduce**
I am unsure why, but converting these units leads to unexpected results:
```
(new Unit(1, 'MW')).to('kW').format() // 1000 kW - correct
(new Unit(1, 'MVAR')).to('kVAR').format() // (1000) kVAR - weird
(new Unit(1, 'MVAR')).to('kW').format() // (1000i) kW - weird
```

I understand the want to represent these as complex numbers, but I think this is fairly out of place when dealing with units. It leads to unexpected conversions and format outputs.

Notice that using `formatUnits` avoids this, of course, since only the number part is affected by this:

```
(new Unit(1, 'MVAR')).to('kVAR').formatUnits() // kVAR
(new Unit(1, 'MVAR')).to('kW').formatUnits() // kW
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.