Skip to content

Commit 42ca8a2

Browse files
committed
Use integer affine transformations for unit conversion
Conversion factors are stored as integer Numerator/Denominator pairs. ConvertUnitValue combines source and target factors over a common denominator and delegates to ApplyUnitConversion, which computes (value × numerator + offset) / denominator using Number arithmetic.
1 parent 27eceb1 commit 42ca8a2

File tree

6 files changed

+3223
-21
lines changed

6 files changed

+3223
-21
lines changed

intl.emu

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,220 @@
126126
</emu-clause>
127127
</emu-clause>
128128

129+
<emu-clause id="sec-amount-intl-unit-conversion">
130+
<h1>Supplemental Unit Conversion Factors</h1>
131+
<p>The following tables define additional unit conversion factors for locale-specific and regional measurement systems. These tables supplement the Unit Conversion Factors tables defined in the base specification and are searched by GetUnitConversionFactor in the same manner.</p>
132+
133+
<emu-table id="table-unit-conversion-factors-length-intl" caption="Unit Conversion Factors: Length (base unit: meter)">
134+
<table>
135+
<thead>
136+
<tr>
137+
<th>Unit</th>
138+
<th>Numerator</th>
139+
<th>Denominator</th>
140+
</tr>
141+
</thead>
142+
<tbody>
143+
<tr>
144+
<td>mile-scandinavian</td>
145+
<td>10000</td>
146+
<td>1</td>
147+
</tr>
148+
<tr>
149+
<td>rin</td>
150+
<td>1</td>
151+
<td>30250</td>
152+
</tr>
153+
<tr>
154+
<td>sun</td>
155+
<td>2</td>
156+
<td>605</td>
157+
</tr>
158+
<tr>
159+
<td>shaku-length</td>
160+
<td>4</td>
161+
<td>121</td>
162+
</tr>
163+
<tr>
164+
<td>shaku-cloth</td>
165+
<td>5</td>
166+
<td>121</td>
167+
</tr>
168+
<tr>
169+
<td>ken</td>
170+
<td>24</td>
171+
<td>121</td>
172+
</tr>
173+
<tr>
174+
<td>jo-jp</td>
175+
<td>40</td>
176+
<td>121</td>
177+
</tr>
178+
<tr>
179+
<td>ri-jp</td>
180+
<td>51840</td>
181+
<td>121</td>
182+
</tr>
183+
</tbody>
184+
</table>
185+
</emu-table>
186+
187+
<emu-table id="table-unit-conversion-factors-mass-intl" caption="Unit Conversion Factors: Mass (base unit: kilogram)">
188+
<table>
189+
<thead>
190+
<tr>
191+
<th>Unit</th>
192+
<th>Numerator</th>
193+
<th>Denominator</th>
194+
</tr>
195+
</thead>
196+
<tbody>
197+
<tr>
198+
<td>fun</td>
199+
<td>3</td>
200+
<td>8000</td>
201+
</tr>
202+
</tbody>
203+
</table>
204+
</emu-table>
205+
206+
<emu-table id="table-unit-conversion-factors-volume-intl" caption="Unit Conversion Factors: Volume (base unit: cubic-meter)">
207+
<table>
208+
<thead>
209+
<tr>
210+
<th>Unit</th>
211+
<th>Numerator</th>
212+
<th>Denominator</th>
213+
</tr>
214+
</thead>
215+
<tbody>
216+
<tr>
217+
<td>dessert-spoon-imperial</td>
218+
<td>454609</td>
219+
<td>204800000000</td>
220+
</tr>
221+
<tr>
222+
<td>cup-imperial</td>
223+
<td>454609</td>
224+
<td>1600000000</td>
225+
</tr>
226+
<tr>
227+
<td>kosaji</td>
228+
<td>1</td>
229+
<td>200000</td>
230+
</tr>
231+
<tr>
232+
<td>osaji</td>
233+
<td>3</td>
234+
<td>200000</td>
235+
</tr>
236+
<tr>
237+
<td>cup-jp</td>
238+
<td>1</td>
239+
<td>10000</td>
240+
</tr>
241+
<tr>
242+
<td>shaku</td>
243+
<td>2401</td>
244+
<td>133100000</td>
245+
</tr>
246+
<tr>
247+
<td>sai</td>
248+
<td>2401</td>
249+
<td>1331000000</td>
250+
</tr>
251+
<tr>
252+
<td>to-jp</td>
253+
<td>2401</td>
254+
<td>133100</td>
255+
</tr>
256+
<tr>
257+
<td>koku</td>
258+
<td>2401</td>
259+
<td>13310</td>
260+
</tr>
261+
</tbody>
262+
</table>
263+
</emu-table>
264+
265+
<emu-table id="table-unit-conversion-factors-area-intl" caption="Unit Conversion Factors: Area (base unit: square-meter)">
266+
<table>
267+
<thead>
268+
<tr>
269+
<th>Unit</th>
270+
<th>Numerator</th>
271+
<th>Denominator</th>
272+
</tr>
273+
</thead>
274+
<tbody>
275+
<tr>
276+
<td>bu-jp</td>
277+
<td>400</td>
278+
<td>121</td>
279+
</tr>
280+
<tr>
281+
<td>se-jp</td>
282+
<td>12000</td>
283+
<td>121</td>
284+
</tr>
285+
<tr>
286+
<td>cho</td>
287+
<td>1200000</td>
288+
<td>121</td>
289+
</tr>
290+
</tbody>
291+
</table>
292+
</emu-table>
293+
294+
<emu-table id="table-unit-conversion-factors-duration-intl" caption="Unit Conversion Factors: Duration (base unit: second)">
295+
<table>
296+
<thead>
297+
<tr>
298+
<th>Unit</th>
299+
<th>Numerator</th>
300+
<th>Denominator</th>
301+
</tr>
302+
</thead>
303+
<tbody>
304+
<tr>
305+
<td>day-person</td>
306+
<td>86400</td>
307+
<td>1</td>
308+
</tr>
309+
<tr>
310+
<td>week-person</td>
311+
<td>604800</td>
312+
<td>1</td>
313+
</tr>
314+
</tbody>
315+
</table>
316+
</emu-table>
317+
318+
<emu-table id="table-unit-conversion-factors-year-duration-intl" caption="Unit Conversion Factors: Year Duration (base unit: year)">
319+
<table>
320+
<thead>
321+
<tr>
322+
<th>Unit</th>
323+
<th>Numerator</th>
324+
<th>Denominator</th>
325+
</tr>
326+
</thead>
327+
<tbody>
328+
<tr>
329+
<td>month-person</td>
330+
<td>1</td>
331+
<td>12</td>
332+
</tr>
333+
<tr>
334+
<td>year-person</td>
335+
<td>1</td>
336+
<td>1</td>
337+
</tr>
338+
</tbody>
339+
</table>
340+
</emu-table>
341+
</emu-clause>
342+
129343
<emu-clause id="sec-amount-intl-normative-references">
130344
<h1>Amendment to the Normative References of ECMA-402</h1>
131345
<emu-note type="editor">

0 commit comments

Comments
 (0)