P-Adic numbers, basic: Difference between revisions

m
Improbved code.
m (Improved code.)
m (Improbved code.)
 
Line 1,688:
 
=={{header|Java}}==
This example displays p-adic numbers in standard mathematical format, consisting of a possibly infinite list of digits extending leftwards from the p-adic point. p-adic numbers are given correct to O(prime^40) and the rational reconstruction is correct to O(prime^20).
<syntaxhighlight lang="java">
import java.util.ArrayList;
Line 1,876:
public String toString() {
List<Integer> numbers = new ArrayList<Integer>(digits);
Collections.reverse(numbers);
padWithZeros(numbers);
Collections.reverse(numbers);
String numberString = numbers.stream().map(String::valueOf).collect(Collectors.joining());
StringBuilder builder = new StringBuilder(numberString);
Line 1,884:
for ( int i = 0; i < order; i++ ) {
builder.append("0");
builder.deleteCharAt(0);
}
Line 1,890 ⟶ 1,889:
} else {
builder.insert(builder.length() + order, ".");
while ( builder.toString().endsWith("0") ) {
builder.deleteCharAt(0builder.length() - 1);
}
}
return " ..." + builder.toString().substring(builder.length() - PRECISION - 21);
}
Line 2,026 ⟶ 2,029:
<pre>
3-adic numbers:
-5 / 9 => ...222222222222222222222222222222222222222222222222222222222222222222222222222222222.11
47 / 12 => ...20202020202020202020202020202020202020202101020202020202020202020202020202020202101.2
sum => ...020202020202020202020202020202020202020210120202020202020202020202020202020202101.01
Rational = 121 / 36
 
7-adic numbers:
5 / 8 => ...424242424242424242424242424242424242424242425424242424242424242424242424242424242425.0
353 / 30809 => ...665231560462505550343461155520004023663643455560462505550343461155520004023663643455.0
sum => ...422504315035233123101033613062431266421216213315035233123101033613062431266421216213.0
Rational = 156869 / 246472
</pre>
876

edits