理想情况下,我可以指定 10 之类的东西作为我的输入(以盎司为单位)并返回一个像这样的字符串:“1 & 1/4 cups”。有没有图书馆可以做这样的事情?(注意:我对这种隐含的舍入完全没问题)。
注意:我更喜欢 C 库,但我可以接受几乎任何语言的解决方案,因为我可能会找到合适的绑定。
理想情况下,我可以指定 10 之类的东西作为我的输入(以盎司为单位)并返回一个像这样的字符串:“1 & 1/4 cups”。有没有图书馆可以做这样的事情?(注意:我对这种隐含的舍入完全没问题)。
注意:我更喜欢 C 库,但我可以接受几乎任何语言的解决方案,因为我可能会找到合适的绑定。
如果你想要通用转换,我的想法是使用谷歌计算器来完成这项任务......
示例:http ://www.google.com/ig/calculator?q= 10%20ounces%20to%20cups -- 返回 JSON,但我相信您可以指定格式。
这是一个用于货币转换的 Java 示例:http: //blog.caplin.com/2011/01/06/simple-currency-conversion-using-google-calculator-and-java/
好吧,对于一个快速而肮脏的解决方案,您总是可以让它作为外部程序运行GNU 单元。如果您的软件与 GPL 兼容,您甚至可以从 Units 中提取代码并在您的程序中使用它。
这实际上是两件事:1)包含转换的数据,2)转换的呈现。
第二个是用户选择:如果你想要分数,你需要编写或获取一个分数库。有许多。
第一个相当容易。绝大多数转换只是一个因素。通常,您会将已知因素组织成转换为适合该类型转换(体积、长度、面积、密度等)的 SI 单位的转换。
然后,您的数据如下所示:
A acres 4.046870000000000E+03 6
A ares 1.000000000000000E+02 15
A barns 1.000000000000000E-28 15
A centiares 1.000000000000000E+00 15
A darcys 9.869230000000000E-13 6
A doors 9.290340000000000E+24 6
A ferrados 7.168458781362010E-01 6
A hectares 1.000000000000000E+04 15
A labors 7.168625518000000E+05 6
A Rhode Island 3.144260000000000E+09 4
A sections 2.590000000000000E+06 6
A sheds 1.000000000000000E-48 15
A square centimeters 1.000000000000000E-04 15
A square chains (Gunter's or surveyor's) 4.046860000000000E+02 6
A square chains (Ramsden's) 9.290304000000000E+02 5
A square feet 9.290340000000000E-02 6
A square inches 6.451600000000000E-04 15
A square kilometers 1.000000000000000E+06 15
A square links (Gunter's or surveyor's) 4.046900000000000E-02 5
A square meters (SI) 1.000000000000000E+00 15
A square miles (statute) 2.590000000000000E+06 7
A square millimeter 1.000000000000000E-06 15
A square mils 6.451610000000000E-10 5
A square perches 2.529300000000000E+01 5
A square poles 2.529300000000000E+01 5
A square rods 2.529300000000000E+01 5
A square yards 8.361270000000000E-01 6
A townships 9.324009324009320E+07 5
在每种情况下,这些都是面积转换为面积的 SI 单位 - 平方米。然后进行第二次转换为所需的转换。第三个数字是有效数字。
为所需因素保留这些文件,然后您可以从任何区域转换为您拥有数据的任何区域。重复其他类别的转换(体积、功率、长度、重量等)
请查看 JSR 363,Java 的测量单位标准:http: //unitsofmeasurement.github.io/
至少在 C++ 中,您已经通过“值类型”获得了基本支持,但您仍然必须自己实现这些转换或找到类似于 JSR 363 为 Java 提供的合适库。