Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何存储一个无理的BigDecimal_Java_Bigdecimal - Fatal编程技术网

Java 如何存储一个无理的BigDecimal

Java 如何存储一个无理的BigDecimal,java,bigdecimal,Java,Bigdecimal,如何存储像pi或7^(1/2)这样的大无理数?最好我能存储大量的数字(1000+),但不是必需的。你不能存储无理数,因为它是无限的。除此之外,您还可以将具有大量但数量有限的数字的存储为普通字符串值。要设置数字的精度,可以使用。这需要位数和a 以下是一个例子: BigDecimal irrational = ... BigDecimal result = irrational.setScale(1000, RoundingMode.HALF_UP); FileUtils.writeStringTo

如何存储像pi或
7^(1/2)
这样的大无理数?最好我能存储大量的数字(1000+),但不是必需的。

你不能存储无理数,因为它是无限的。除此之外,您还可以将具有大量但数量有限的数字的存储为普通字符串值。要设置数字的精度,可以使用。这需要位数和a

以下是一个例子:

BigDecimal irrational = ...
BigDecimal result = irrational.setScale(1000, RoundingMode.HALF_UP);
FileUtils.writeStringToFile(new File("test.txt"), result.toPlainString());
我建议使用,而不是

从文档中:

toPlainString()
返回此BigDecimal的字符串表示形式,不带指数字段

toString()
返回此BigDecimal的字符串表示形式,如果需要指数,则使用科学符号

从文件创建一个新的
BigDecimal
,只需将字符串值传递给构造函数即可:

BigDecimal number = new BigDecimal(FileUtils.readFileToString(new File("test.txt")));

您还可以使用它将号码存储在数据库中,或存储在任何您想要的位置。只需将其存储为字符串值。

无法将无理数精确存储为
BigDecimal
。非有理数没有有限的十进制表示。可以存储一个近似值。你试过什么?我试过MathContext。round()也许你想发布并描述一下你遇到的问题。问题是“如何计算高精度的平方根或π?”存储这样一个数字与存储任何其他数字没有什么不同。请参阅此处的示例,了解如何计算平方根舍入使数字合理。@Makoto当然是这样,正如我在帖子中所写:当然,只有有限的位数。你不能储存无限的数字。但是你可以设定准确度。你可能想重新措辞你的开场白。给我的印象是,我可以将无理数存储在
BigDecimal
@Makoto中是的,谢谢你的提示。这在一开始并不十分清楚。我更新了我的帖子。希望现在更清楚。