ICU-22540 Add new CLDR units ronto, ronna, quecto, and quetta

This commit is contained in:
Frank Tang 2023-10-12 13:38:09 -07:00 committed by Frank Yung-Fong Tang
parent a7c7d8f214
commit 1bb711ad20
5 changed files with 82 additions and 0 deletions

View file

@ -102,6 +102,8 @@ const struct UnitPrefixStrings {
UMeasurePrefix value;
} gUnitPrefixStrings[] = {
// SI prefixes
{ "quetta", UMEASURE_PREFIX_QUETTA },
{ "ronna", UMEASURE_PREFIX_RONNA },
{ "yotta", UMEASURE_PREFIX_YOTTA },
{ "zetta", UMEASURE_PREFIX_ZETTA },
{ "exa", UMEASURE_PREFIX_EXA },
@ -122,6 +124,8 @@ const struct UnitPrefixStrings {
{ "atto", UMEASURE_PREFIX_ATTO },
{ "zepto", UMEASURE_PREFIX_ZEPTO },
{ "yocto", UMEASURE_PREFIX_YOCTO },
{ "ronto", UMEASURE_PREFIX_RONTO },
{ "quecto", UMEASURE_PREFIX_QUECTO },
// Binary prefixes
{ "yobi", UMEASURE_PREFIX_YOBI },
{ "zebi", UMEASURE_PREFIX_ZEBI },

View file

@ -107,13 +107,34 @@ typedef enum UMeasurePrefix {
*/
UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24,
#ifndef U_HIDE_DRAFT_API
/**
* SI prefix: ronna, 10^27.
*
* @draft ICU 75
*/
UMEASURE_PREFIX_RONNA = UMEASURE_PREFIX_ONE + 27,
/**
* SI prefix: quetta, 10^30.
*
* @draft ICU 75
*/
UMEASURE_PREFIX_QUETTA = UMEASURE_PREFIX_ONE + 30,
#endif /* U_HIDE_DRAFT_API */
#ifndef U_HIDE_INTERNAL_API
/**
* ICU use only.
* Used to determine the set of base-10 SI prefixes.
* @internal
*/
#ifndef U_HIDE_DRAFT_API
UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_QUETTA,
#else /* U_HIDE_DRAFT_API */
UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA,
#endif /* U_HIDE_DRAFT_API */
#endif /* U_HIDE_INTERNAL_API */
/**
@ -249,13 +270,34 @@ typedef enum UMeasurePrefix {
*/
UMEASURE_PREFIX_YOCTO = UMEASURE_PREFIX_ONE + -24,
#ifndef U_HIDE_DRAFT_API
/**
* SI prefix: ronto, 10^-27.
*
* @draft ICU 75
*/
UMEASURE_PREFIX_RONTO = UMEASURE_PREFIX_ONE + -27,
/**
* SI prefix: quecto, 10^-30.
*
* @draft ICU 75
*/
UMEASURE_PREFIX_QUECTO = UMEASURE_PREFIX_ONE + -30,
#endif /* U_HIDE_DRAFT_API */
#ifndef U_HIDE_INTERNAL_API
/**
* ICU use only.
* Used to determine the set of base-10 SI prefixes.
* @internal
*/
#ifndef U_HIDE_DRAFT_API
UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_QUECTO,
#else /* U_HIDE_DRAFT_API */
UMEASURE_PREFIX_INTERNAL_MIN_SI = UMEASURE_PREFIX_YOCTO,
#endif /* U_HIDE_DRAFT_API */
#endif // U_HIDE_INTERNAL_API
// Cannot conditionalize the following with #ifndef U_HIDE_INTERNAL_API,

View file

@ -5743,6 +5743,8 @@ void MeasureFormatTest::TestPrefixes() {
int32_t expectedBase;
int32_t expectedPower;
} cases[] = {
{UMEASURE_PREFIX_QUECTO, 10, -30},
{UMEASURE_PREFIX_RONTO, 10, -27},
{UMEASURE_PREFIX_YOCTO, 10, -24},
{UMEASURE_PREFIX_ZEPTO, 10, -21},
{UMEASURE_PREFIX_ATTO, 10, -18},
@ -5764,6 +5766,8 @@ void MeasureFormatTest::TestPrefixes() {
{UMEASURE_PREFIX_EXA, 10, 18},
{UMEASURE_PREFIX_ZETTA, 10, 21},
{UMEASURE_PREFIX_YOTTA, 10, 24},
{UMEASURE_PREFIX_RONNA, 10, 27},
{UMEASURE_PREFIX_QUETTA, 10, 30},
{UMEASURE_PREFIX_KIBI, 1024, 1},
{UMEASURE_PREFIX_MEBI, 1024, 2},
{UMEASURE_PREFIX_GIBI, 1024, 3},

View file

@ -4623,6 +4623,8 @@ public class MeasureUnitTest extends CoreTestFmwk {
}
TestCase cases[] = {
new TestCase(MeasureUnit.MeasurePrefix.QUECTO, 10, -30),
new TestCase(MeasureUnit.MeasurePrefix.RONTO, 10, -27),
new TestCase(MeasureUnit.MeasurePrefix.YOCTO, 10, -24),
new TestCase(MeasureUnit.MeasurePrefix.ZEPTO, 10, -21),
new TestCase(MeasureUnit.MeasurePrefix.ATTO, 10, -18),
@ -4644,6 +4646,8 @@ public class MeasureUnitTest extends CoreTestFmwk {
new TestCase(MeasureUnit.MeasurePrefix.EXA, 10, 18),
new TestCase(MeasureUnit.MeasurePrefix.ZETTA, 10, 21),
new TestCase(MeasureUnit.MeasurePrefix.YOTTA, 10, 24),
new TestCase(MeasureUnit.MeasurePrefix.RONNA, 10, 27),
new TestCase(MeasureUnit.MeasurePrefix.QUETTA, 10, 30),
new TestCase(MeasureUnit.MeasurePrefix.KIBI, 1024, 1),
new TestCase(MeasureUnit.MeasurePrefix.MEBI, 1024, 2),
new TestCase(MeasureUnit.MeasurePrefix.GIBI, 1024, 3),

View file

@ -118,6 +118,20 @@ public class MeasureUnit implements Serializable {
*/
public enum MeasurePrefix {
/**
* SI prefix: quetta, 10^30.
*
* @draft ICU 75
*/
QUETTA(30, "quetta", 10),
/**
* SI prefix: ronna, 10^27.
*
* @draft ICU 75
*/
RONNA(27, "ronna", 10),
/**
* SI prefix: yotta, 10^24.
*
@ -265,6 +279,20 @@ public class MeasureUnit implements Serializable {
*/
YOCTO(-24, "yocto", 10),
/**
* SI prefix: ronto, 10^-27.
*
* @draft ICU 75
*/
RONTO(-27, "ronto", 10),
/**
* SI prefix: quecto, 10^-30.
*
* @draft ICU 75
*/
QUECTO(-30, "quecto", 10),
/**
* IEC binary prefix: kibi, 1024^1.
*