Java 将精度加1到大十进制数?

Java 将精度加1到大十进制数?,java,Java,我有如下要求 我有一些大十进制类型:100 i need a method which will take input(100 here) and gives output as 100.1 if 100.1 is passed it should return 100.2 if 100.2 is passed it should return 100.3....etc 有什么最简单的解决办法吗 谢谢 您可以重新缩放它,添加1,然后缩小它。 正如@PeterLawrey所建议的,这可以简化为只

我有如下要求

我有一些大十进制类型:100

i need a method which will take input(100 here) and gives output as 100.1
if 100.1 is passed it should return 100.2
if 100.2 is passed it should return 100.3....etc
有什么最简单的解决办法吗

谢谢

您可以重新缩放它,添加1,然后缩小它。
正如@PeterLawrey所建议的,这可以简化为只添加
BigDecimal.ONE.scaleByPowerOfTen(-scale)

印刷品

100.013
100.02
100.2
101
如果希望
100
变为
100.1
,请将第一行更改为

int scale = Math.max(1, value.scale());
您可以重新缩放它,添加1,然后将其缩小。
正如@PeterLawrey所建议的,这可以简化为只添加
BigDecimal.ONE.scaleByPowerOfTen(-scale)

印刷品

100.013
100.02
100.2
101
如果希望
100
变为
100.1
,请将第一行更改为

int scale = Math.max(1, value.scale());


它总是在任何数字上加1吗?如果通过100.01,它会返回100.02还是100.11?它应该返回100.02而不是100.11。谢谢100.012 100.022或100.013的结果应该是什么?可能您需要执行字符串操作来计算精度,然后添加数字/(10^精度)。当超过100.0时,它应该做什么?它是否总是向任何数字添加.1?如果通过100.01,它会返回100.02还是100.11?它应该返回100.02而不是100.11。谢谢100.012 100.022或100.013的结果应该是什么?可能您需要进行字符串操作来计算精度,然后添加数字/(10^精度)当超过100.0时,它应该做什么?或者您可以添加
bigdecimic.ONE.scaleByPowerOfTen(-scale)
@PeterLawrey:是的,听起来好多了。编辑。出于好奇,@user1538040您能解释一下这些要求的原因吗?它们似乎很不寻常。@user1538040:听起来你并不是在用
bigdecimic
作为数字,也许用
String
表示更合适?数据库返回什么类型并不重要,重要的是你想用它做什么。你的描述听起来不像是把它们当作数字。例如,您主要是在增加数字,除非它类似于100.9,在这种情况下,您是在减少它(100.10<100.9)。很难看出这种行为作为一个数字有什么意义。如果你需要像@Keppil和你的描述所建议的那样把它们当作字符串来对待,那么把它们转换成字符串很容易,或者你可以添加
BigDecimal.ONE.scaleByPowerOfTen(-scale)
@PeterLawrey:是的,听起来好多了。编辑。出于好奇,@user1538040您能解释一下这些要求的原因吗?它们似乎很不寻常。@user1538040:听起来你并不是在用
bigdecimic
作为数字,也许用
String
表示更合适?数据库返回什么类型并不重要,重要的是你想用它做什么。你的描述听起来不像是把它们当作数字。例如,您主要是在增加数字,除非它类似于100.9,在这种情况下,您是在减少它(100.10<100.9)。很难看出这种行为作为一个数字有什么意义。如果您需要像@Keppil所建议的和您的描述所建议的那样将它们视为字符串,那么很容易将它们转换为字符串