mirror of
https://github.com/reactos/reactos.git
synced 2024-09-29 14:09:10 +00:00
[CALC] Add new, and fix existing units conversions. CORE-5939
- Add support for new conversion units: * AREA: 'mu', 'rai'. * LENGTH: 'chi', 'cun'. 'sun' optimized. * TIME: 'nanoseconds'. * WEIGHT: 'Kan', 'Kin'. - Add support for thailand measure system; invaluable help from this page: http://www.eppo.go.th/ref/UNIT-ALL.html - Add ZHANG (Chinese), and DANBO, JEONGBO (Korean) units. See details here: https://en.wikipedia.org/wiki/Chinese_units_of_measurement https://en.wikipedia.org/wiki/Korean_units_of_measurement - Rewritten some units formula by using scientific notation. - Improved precision of parsec unit coversion formula.
This commit is contained in:
parent
18b4718d54
commit
dcea9e73c6
|
@ -1,3 +1,23 @@
|
|||
/*
|
||||
* ReactOS Calc (Unit conversion engine)
|
||||
*
|
||||
* Copyright 2007-2017, Carlo Bramini
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "calc.h"
|
||||
|
||||
/*
|
||||
|
@ -62,13 +82,13 @@ static const conv_t conv_ANGLE[] = {
|
|||
1 acre us ............. = 4840*(36/39.37)^2 m = 6272640/1549.9969 m
|
||||
1 are ................. = 100 mq
|
||||
1 chou ................ = 108000*(10/33)^2 mq
|
||||
1 danbo ............... =
|
||||
1 danbo ............... = 991.74 mq
|
||||
1 ha .................. = 10000 mq
|
||||
1 jeongbo ............. =
|
||||
1 morgen hungary ...... =
|
||||
1 jeongbo ............. = 9917.4 mq
|
||||
1 morgen hungary ...... = 5754.642 mq
|
||||
1 mu .................. = 2000/3 mq
|
||||
1 ping ................ =
|
||||
1 pyeong .............. =
|
||||
1 pyeong .............. = 400/121 mq
|
||||
1 pyeongbangja ........ =
|
||||
1 rai ................. = 1600 mq
|
||||
1 se .................. = 1080*(10/33)^2 mq
|
||||
|
@ -84,7 +104,7 @@ static const conv_t conv_ANGLE[] = {
|
|||
1 square mm ........... = 0,000001 mq
|
||||
1 square shaku ........ = (10/33)^2 mq
|
||||
1 square tsuen ........ =
|
||||
1 square va ........... =
|
||||
1 square va ........... = 4 mq
|
||||
1 square yard ......... = 0,83612736 mq
|
||||
1 tan ................. = 10800*(10/33)^2 mq
|
||||
1 tsubo ............... = 36*(10/33)^2 mq
|
||||
|
@ -97,15 +117,15 @@ static const conv_t conv_AREA[] = {
|
|||
DECLARE_CONV_UNIT(AREA, ACRES_SCOTS, "$*5000", "$/5000")
|
||||
DECLARE_CONV_UNIT(AREA, ARES, "$*100", "$/100")
|
||||
DECLARE_CONV_UNIT(AREA, CHOU, "$*10800000/1089", "$*1089/10800000")
|
||||
// DECLARE_CONV_UNIT(AREA, DANBO, "$", "$")
|
||||
DECLARE_CONV_UNIT(AREA, DANBO, "$*991.74", "$/991.74")
|
||||
DECLARE_CONV_UNIT(AREA, HECTARES, "$*10000", "$/10000")
|
||||
// DECLARE_CONV_UNIT(AREA, JEONGBO, "$", "$")
|
||||
DECLARE_CONV_UNIT(AREA, JEONGBO, "$*9917.4", "$/9917.4")
|
||||
// DECLARE_CONV_UNIT(AREA, MORGEN_HUNGARY, "$", "$")
|
||||
DECLARE_CONV_UNIT(AREA, MU, "$*(2000/3)", "$/(2000/3)")
|
||||
DECLARE_CONV_UNIT(AREA, MU, "$*(2000/3)", "$/(2000/3)")
|
||||
// DECLARE_CONV_UNIT(AREA, PING, "$", "$")
|
||||
// DECLARE_CONV_UNIT(AREA, PYEONG, "$", "$")
|
||||
DECLARE_CONV_UNIT(AREA, PYEONG, "$*400/121", "$*121/400")
|
||||
// DECLARE_CONV_UNIT(AREA, PYEONGBANGJA, "$", "$")
|
||||
DECLARE_CONV_UNIT(AREA, RAI, "$*1600", "$/1600")
|
||||
DECLARE_CONV_UNIT(AREA, RAI, "$*1600", "$/1600")
|
||||
DECLARE_CONV_UNIT(AREA, SE, "$*108000/1089", "$*1089/108000")
|
||||
DECLARE_CONV_UNIT(AREA, SQUARE_CENTIMETERS, "$*0,0001", "$/0,0001")
|
||||
// DECLARE_CONV_UNIT(AREA, SQUARE_CHR, "$", "$")
|
||||
|
@ -120,7 +140,7 @@ static const conv_t conv_AREA[] = {
|
|||
DECLARE_CONV_UNIT(AREA, SQUARE_MILLIMETERS, "$*1000000", "$/1000000")
|
||||
DECLARE_CONV_UNIT(AREA, SQUARE_SHAKU, "$*100/1089", "$/1089*100")
|
||||
// DECLARE_CONV_UNIT(AREA, SQUARE_TSUEN, "$", "$")
|
||||
// DECLARE_CONV_UNIT(AREA, SQUARE_VA, "$", "$")
|
||||
DECLARE_CONV_UNIT(AREA, SQUARE_VA, "$*4", "$/4")
|
||||
DECLARE_CONV_UNIT(AREA, SQUARE_YARD, "$*0,83612736", "$/0,83612736")
|
||||
DECLARE_CONV_UNIT(AREA, TAN, "$*1080000/1089", "$*1089/1080000")
|
||||
DECLARE_CONV_UNIT(AREA, TSUBO, "$*1188/1089", "$*1089/1188")
|
||||
|
@ -168,7 +188,7 @@ static const conv_t conv_CURRENCY[] = {
|
|||
1 cal15 .... = 4.1855 J
|
||||
1 BTU ...... = 1055.056 J
|
||||
1 ERG ...... = 0.0000001 J
|
||||
1 EV ....... = 0.000000000000000000160217653 J
|
||||
1 eV ....... = 0.000000000000000000160217653 J
|
||||
1 Foot-Pound = 1.3558179483314004 J
|
||||
1 IT calorie = 4.1868 J
|
||||
1 KCa ...... = 4186.8 J
|
||||
|
@ -181,7 +201,7 @@ static const conv_t conv_ENERGY[] = {
|
|||
DECLARE_CONV_UNIT(ENERGY, 15_C_CALORIES, "$*4.1855", "$/4.1855")
|
||||
DECLARE_CONV_UNIT(ENERGY, BTUS, "$*1055.056", "$/1055.056")
|
||||
DECLARE_CONV_UNIT(ENERGY, ERGS, "$*.0000001", "$/.0000001")
|
||||
DECLARE_CONV_UNIT(ENERGY, EVS, "$*.000000000000000000160217653", "$/.000000000000000000160217653")
|
||||
DECLARE_CONV_UNIT(ENERGY, EVS, "$*1.60217653/1X19", "$/1.60217653*1X19")
|
||||
DECLARE_CONV_UNIT(ENERGY, FOOT_POUNDS, "$*1.3558179483314004", "$/1.3558179483314004")
|
||||
DECLARE_CONV_UNIT(ENERGY, IT_CALORIES, "$*4.1868", "$/4.1868")
|
||||
DECLARE_CONV_UNIT(ENERGY, IT_KILOCALORIES, "$*4186.8", "$/4186.8")
|
||||
|
@ -209,13 +229,13 @@ static const conv_t conv_ENERGY[] = {
|
|||
1 furlong ........ = 10 chains = 220*0.9144 m
|
||||
1 gan ............ =
|
||||
1 hand ........... = 4 inches = 0.9144/9 m
|
||||
1 hunh ........... =
|
||||
1 hunh ........... = 1/8 nieu = 9.144/3456 m
|
||||
1 inch ........... = yard/36 = 0.9144/36 m
|
||||
1 ja ............. =
|
||||
1 jeong .......... =
|
||||
1 kabiet ......... =
|
||||
1 kabiet ......... = 1/4 nieu = 9.144/1728 m
|
||||
1 ken ............ = 60/33 m
|
||||
1 keub ........... =
|
||||
1 keub ........... = 12 nieu = 10 inch = 9.144/36 m
|
||||
1 km ............. = 1000 m
|
||||
1 lar ............ =
|
||||
1 light year ..... = 9460730472580800 m
|
||||
|
@ -224,25 +244,25 @@ static const conv_t conv_ENERGY[] = {
|
|||
1 mile ........... = 1760 yards = 1609.344 m
|
||||
1 millimeter ..... = 1/1000 m
|
||||
1 nautical mile .. = 1852 m
|
||||
1 nieu ........... =
|
||||
1 nieu ........... = 10/12 inch = 9.144/432 m
|
||||
1 parsec ......... = 30856800000000000 m
|
||||
1 pica ........... = yard/216 = 0.9144/216 m
|
||||
1 ri japan ....... =
|
||||
1 ri korea ....... =
|
||||
1 ri japan ....... = 129600/33 m
|
||||
1 ri korea ....... = 12960/33 m
|
||||
1 rod ............ = 5.0292 m
|
||||
1 sawk ........... =
|
||||
1 sen ............ =
|
||||
1 sawk ........... = 2 keub = 20 inch = 9.144/18 m
|
||||
1 sen ............ = 20 va = 40.64 m
|
||||
1 shaku .......... = 10/33 m
|
||||
1 span ........... = 9 inches = 0.9144/4 m
|
||||
1 sun ............ = 1/33 m
|
||||
1 tsuen .......... =
|
||||
1 va ............. =
|
||||
1 va ............. = 4 sawk = 80 inch = 2.032 m
|
||||
1 yard ........... = 0.9144 m
|
||||
1 yote ........... =
|
||||
1 zhang .......... =
|
||||
1 yote ........... = 400 sen = 16256 m
|
||||
1 zhang .......... = 3+1/3 m = 10/3 m
|
||||
*/
|
||||
static const conv_t conv_LENGTH[] = {
|
||||
DECLARE_CONV_UNIT(LENGTH, ANGSTROMS, "$*0.0000000001", "$/0.0000000001")
|
||||
DECLARE_CONV_UNIT(LENGTH, ANGSTROMS, "$/1X10", "$*1X10")
|
||||
DECLARE_CONV_UNIT(LENGTH, ASTRONOMICAL_UNITS, "$*149598000000", "$/149598000000")
|
||||
DECLARE_CONV_UNIT(LENGTH, BARLEYCORNS, "$*0.9144/108", "$/0.9144*108")
|
||||
DECLARE_CONV_UNIT(LENGTH, CENTIMETERS, "$/100", "$*100")
|
||||
|
@ -257,13 +277,13 @@ static const conv_t conv_LENGTH[] = {
|
|||
DECLARE_CONV_UNIT(LENGTH, FURLONGS, "$*201.168", "$/201.168")
|
||||
// DECLARE_CONV_UNIT(LENGTH, GAN, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, HANDS, "$*0,1016", "$/0,1016")
|
||||
// DECLARE_CONV_UNIT(LENGTH, HUNH, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, HUNH, "$*9.144/3456", "$/9.144*3456")
|
||||
DECLARE_CONV_UNIT(LENGTH, INCHES, "$*0.0254", "$/0.0254")
|
||||
// DECLARE_CONV_UNIT(LENGTH, JA, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, JEONG, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, KABIET, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, KABIET, "$*9.144/1728", "$/9.144*1728")
|
||||
DECLARE_CONV_UNIT(LENGTH, KEN, "$*60/33", "$*33/60")
|
||||
// DECLARE_CONV_UNIT(LENGTH, KEUB, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, KEUB, "$*9.144/36", "$/9.144*36")
|
||||
DECLARE_CONV_UNIT(LENGTH, KILOMETERS, "$*1000", "$/1000")
|
||||
// DECLARE_CONV_UNIT(LENGTH, LAR, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, LIGHT_YEARS, "$*9460730472580800", "$/9460730472580800")
|
||||
|
@ -273,22 +293,22 @@ static const conv_t conv_LENGTH[] = {
|
|||
DECLARE_CONV_UNIT(LENGTH, MILES, "$*1609.344", "$/1609.344")
|
||||
DECLARE_CONV_UNIT(LENGTH, MILLIMETERS, "$/1000", "$*1000")
|
||||
DECLARE_CONV_UNIT(LENGTH, NAUTICAL_MILES, "$*1852", "$/1852")
|
||||
// DECLARE_CONV_UNIT(LENGTH, NIEU, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, PARSECS, "$*30856800000000000", "$/30856800000000000")
|
||||
DECLARE_CONV_UNIT(LENGTH, NIEU, "$*9.144/432", "$/9.144*432")
|
||||
DECLARE_CONV_UNIT(LENGTH, PARSECS, "$*3.085678X16", "$/3.085678X16")
|
||||
DECLARE_CONV_UNIT(LENGTH, PICAS, "$*0.9144/216", "$/0.9144*216")
|
||||
DECLARE_CONV_UNIT(LENGTH, RODS, "$*5.0292", "$/5.0292")
|
||||
// DECLARE_CONV_UNIT(LENGTH, RI_JAPAN, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, RI_KOREA, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, SAWK, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, SEN, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, RI_JAPAN, "$*129600/33", "$*33/129600")
|
||||
DECLARE_CONV_UNIT(LENGTH, RI_KOREA, "$*12960/33", "$*33/12960")
|
||||
DECLARE_CONV_UNIT(LENGTH, SAWK, "$*9.144/18", "$/9.144*18")
|
||||
DECLARE_CONV_UNIT(LENGTH, SEN, "$*40.64", "$/40.64")
|
||||
DECLARE_CONV_UNIT(LENGTH, SHAKU, "$*10/33", "$*33/10")
|
||||
DECLARE_CONV_UNIT(LENGTH, SPAN, "$*0.9144/4", "$*4/0.9144")
|
||||
DECLARE_CONV_UNIT(LENGTH, SUN, "$*1/33", "$*33")
|
||||
// DECLARE_CONV_UNIT(LENGTH, TSUEN, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, VA, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, VA, "$*2.032", "$/2.032")
|
||||
DECLARE_CONV_UNIT(LENGTH, YARDS, "$*0.9144", "$/0.9144")
|
||||
// DECLARE_CONV_UNIT(LENGTH, YOTE, "$", "$")
|
||||
// DECLARE_CONV_UNIT(LENGTH, ZHANG, "$", "$")
|
||||
DECLARE_CONV_UNIT(LENGTH, YOTE, "$*16256", "$/16256")
|
||||
DECLARE_CONV_UNIT(LENGTH, ZHANG, "$/0.3", "$*0.3")
|
||||
DECLARE_CONV_END
|
||||
};
|
||||
|
||||
|
@ -387,7 +407,7 @@ static const conv_t conv_VELOCITY[] = {
|
|||
/*
|
||||
1 barrel uk ...... = 163.65924 l
|
||||
1 barrel oil ..... = 158.987295 l
|
||||
1 bun ............ =
|
||||
1 bun ............ = 1000 l
|
||||
1 bushel uk ...... = 36.36872 l
|
||||
1 bushel us ...... = 35.23907017 l
|
||||
1 cubic cm ...... = 0.001 l
|
||||
|
@ -404,7 +424,7 @@ static const conv_t conv_VELOCITY[] = {
|
|||
1 gou ............ = 0.1809 l
|
||||
1 hop ............ =
|
||||
1 icce ........... =
|
||||
1 kwian .......... =
|
||||
1 kwian .......... = 2000 l
|
||||
1 mal ............ =
|
||||
1 milliliter ..... = 0.001 l
|
||||
1 pint uk ........ = 0.56826125 l
|
||||
|
@ -415,14 +435,14 @@ static const conv_t conv_VELOCITY[] = {
|
|||
1 quart liquid us = 0.946352946 l
|
||||
1 seki ........... =
|
||||
1 syou ........... =
|
||||
1 tananloung ..... =
|
||||
1 tang ........... =
|
||||
1 tananloung ..... = 1 l
|
||||
1 tang ........... = 20 l
|
||||
1 to ............. = 18040 l
|
||||
*/
|
||||
static const conv_t conv_VOLUME[] = {
|
||||
DECLARE_CONV_UNIT(VOLUME, BARRELS_UK, "$*163.65924", "$/163.65924")
|
||||
DECLARE_CONV_UNIT(VOLUME, BARRELS_OIL, "$*158.987295", "$/158.987295")
|
||||
// DECLARE_CONV_UNIT(VOLUME, BUN, "$", "$")
|
||||
DECLARE_CONV_UNIT(VOLUME, BUN, "$*1000", "$/1000")
|
||||
DECLARE_CONV_UNIT(VOLUME, BUSHELS_UK, "$*36.36872", "$/36.36872")
|
||||
DECLARE_CONV_UNIT(VOLUME, BUSHELS_US, "$*35.23907017", "$/35.23907017")
|
||||
DECLARE_CONV_UNIT(VOLUME, CUBIC_CENTIMETERS, "$*0.001", "$/0.001")
|
||||
|
@ -439,7 +459,7 @@ static const conv_t conv_VOLUME[] = {
|
|||
DECLARE_CONV_UNIT(VOLUME, GOU, "$*0.1809", "$/0.1809")
|
||||
// DECLARE_CONV_UNIT(VOLUME, HOP, "$", "$")
|
||||
// DECLARE_CONV_UNIT(VOLUME, ICCE, "$", "$")
|
||||
// DECLARE_CONV_UNIT(VOLUME, KWIAN, "$", "$")
|
||||
DECLARE_CONV_UNIT(VOLUME, KWIAN, "$*2000", "$/2000")
|
||||
DECLARE_CONV_UNIT(VOLUME, LITERS, "$", "$")
|
||||
// DECLARE_CONV_UNIT(VOLUME, MAL, "$", "$")
|
||||
DECLARE_CONV_UNIT(VOLUME, MILLILITERS, "$*0.001", "$/0.001")
|
||||
|
@ -451,8 +471,8 @@ static const conv_t conv_VOLUME[] = {
|
|||
DECLARE_CONV_UNIT(VOLUME, QUARTS_LIQUID_US, "$*0.946352946", "$/0.946352946")
|
||||
// DECLARE_CONV_UNIT(VOLUME, SEKI, "$", "$")
|
||||
// DECLARE_CONV_UNIT(VOLUME, SYOU, "$", "$")
|
||||
// DECLARE_CONV_UNIT(VOLUME, TANANLOUNG, "$", "$")
|
||||
// DECLARE_CONV_UNIT(VOLUME, TANG, "$", "$")
|
||||
DECLARE_CONV_UNIT(VOLUME, TANANLOUNG, "$", "$")
|
||||
DECLARE_CONV_UNIT(VOLUME, TANG, "$*20", "$/20")
|
||||
DECLARE_CONV_UNIT(VOLUME, TO, "$*18040", "$/18040")
|
||||
DECLARE_CONV_END
|
||||
};
|
||||
|
@ -484,6 +504,17 @@ static const conv_t conv_VOLUME[] = {
|
|||
1 ton uk .......... = 1016046.9088 g // long ton
|
||||
1 ton us .......... = 907184.74 g // short ton
|
||||
*/
|
||||
/*
|
||||
1 chang = 20 tamlung
|
||||
1 tamlung = 4 baht
|
||||
1 baht = 4 saloung
|
||||
1 saloung =
|
||||
|
||||
1 chang = 6/5 kg = 1200 g
|
||||
1 tamlung = 1/20 chang = 60 g
|
||||
1 baht = 1/4 tamlung = 15 g
|
||||
1 saloung = 1/4 bath = 15/4 g
|
||||
*/
|
||||
static const conv_t conv_WEIGHT[] = {
|
||||
DECLARE_CONV_UNIT(WEIGHT, BAHT, "$*12.244", "$/12.244")
|
||||
DECLARE_CONV_UNIT(WEIGHT, CARATS, "$*0.2", "$/0.2")
|
||||
|
|
Loading…
Reference in a new issue