我们目前有一种粗略的机制,可以将数字转换为单词(例如使用一些静态数组),并根据将其转换为英文文本的数字大小.但是我们遇到的问题是巨大的数字.
10183 = Ten thousand one hundred eighty three
90 = Ninety
5888 = Five thousand eight hundred eighty eight
Run Code Online (Sandbox Code Playgroud)
在我可以用于此目的的任何数学库中是否有一个易于使用的函数?
在我的项目,地方我有一个工作unitOfIssue的Items.现在,各种项目当然可以有不同的表示单位.所以,我正在寻找一些API或某种方式,以优雅地处理这种情况.
是否有任何可用的API,它提供了一些表示这些单位的方法?我听说JScience似乎令人印象深刻,但我再次面临着映射它的另一个问题JPA.在一些谷歌工作之后,我发现在这种情况下正在进行一些工作 - JScience-JPA,但似乎在生产中使用它还不稳定.
我也发现了一些关于JSR-275的东西,但是从这个JCP页面看来它似乎已经被拒绝了.
然后我遇到了单位测量,我还没有深入细节.但是,同样的问题也来了.这可以用JPA映射吗?
编辑: -从这个SO问题我遇到了带有Unit的Java Numbers,但我不知道它是否已准备好生产.
我真的很困惑,特别是在看到上述选项之后.JPA是一个额外的问题,我是否可以使用它们中的任何一个.有没有人遇到过这样的情况,并找到了解决方法?我真的需要一些帮助.我该怎么用?如果没有其他出路,那么表示这些单位的适当方式是什么.我看到的一种方法是使用enums.但是,当然,这将是最后的选择.
我的应用程序正在生成Double.toString()生成"-3.1999999999999953"的双打 - 而我希望它生成"-3.2".
我实际上从JScience获得这些双打Amount#getEstimatedValue().
我不想为精度设置任意数量的数字,因为我不知道有多少位数是重要的,但我不希望它产生以"99999999.*"结尾的数字.
如何在没有这个问题的情况下将双打转换为字符串?
我在我的Android应用程序中使用Gradle,我想使用JScience库依赖项.我这样添加了库:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'org.jscience:jscience:4.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Run Code Online (Sandbox Code Playgroud)
但是在编译时我收到错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Ljavax/realtime/MemoryArea;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
Run Code Online (Sandbox Code Playgroud)
这是因为javax.realtime项目中的包重复,一个是JDK的一部分,第二个是在Jscience库中.我试图在Gradle中以这种方式从Jscience库中删除此包:
sourceSets {
main {
java {
exclude 'javax/realtime/**'
}
}
}
configurations {
all*.exclude group: 'javax.realtime'
}
Run Code Online (Sandbox Code Playgroud)
但这没有帮助.因此,该包仍然存在于依赖项中.

有没有什么办法可以在编译时从jar中排除一个包?
我正在使用JSR363的参考实现.我尝试了很多这方面的变化,但我会以此代码为例.
ServiceProvider provider = ServiceProvider.current();
QuantityFactory<Length> lengthFactory = provider.getQuantityFactory(Length.class);
Quantity<Length> first = lengthFactory.create(5, Units.METRE.divide(100.0));
Quantity<Length> second = lengthFactory.create(3, Units.METRE);
System.out.println(second.add(first));
Run Code Online (Sandbox Code Playgroud)
这打印503.0米.显然有些东西是非常错误的,这应该是3.05米.我发现很难相信这实际上是图书馆的一个错误,我希望有人可以告诉我我错过了什么.
我想在JScience 中定义一个新的距离单位。项目网站的“教程”部分只是指向 Javadoc,它虽然相当完整,但对我来说有点过于密集,无法理解我实际上是如何定义自己的单元的。
你能举个例子吗?
干杯。
皮特