Из Отображать номера в научной нотации . ( Копирование / вставка, потому что у страницы возникают проблемы )
Вы можете отображать числа в научной нотации с помощью пакета java.text
. Для этого можно использовать DecimalFormat
класс в пакете java.text
.
В следующем примере показано, как это сделать:
import java.text.*;
import java.math.*;
public class TestScientific {
public static void main(String args[]) {
new TestScientific().doit();
}
public void doit() {
NumberFormat formatter = new DecimalFormat();
int maxinteger = Integer.MAX_VALUE;
System.out.println(maxinteger); // 2147483647
formatter = new DecimalFormat("0.######E0");
System.out.println(formatter.format(maxinteger)); // 2,147484E9
formatter = new DecimalFormat("0.#####E0");
System.out.println(formatter.format(maxinteger)); // 2.14748E9
int mininteger = Integer.MIN_VALUE;
System.out.println(mininteger); // -2147483648
formatter = new DecimalFormat("0.######E0");
System.out.println(formatter.format(mininteger)); // -2.147484E9
formatter = new DecimalFormat("0.#####E0");
System.out.println(formatter.format(mininteger)); // -2.14748E9
double d = 0.12345;
formatter = new DecimalFormat("0.#####E0");
System.out.println(formatter.format(d)); // 1.2345E-1
formatter = new DecimalFormat("000000E0");
System.out.println(formatter.format(d)); // 12345E-6
}
}
Вы можете использовать метод Buffer.BlockCopy
:
const int d1 = 10;
const int d2 = 3;
const int doubleSize = 8;
double[,] rectArray = new double[d1, d2];
double[] target = new double[d2];
int rowToGet = 3;
Buffer.BlockCopy(rectArray, doubleSize * d2 * rowToGet, target, 0, doubleSize * d2);
LINQ to the rescue:
var s = rectArray.Cast<double>().Skip(9).Take(3).ToArray();
Explanation: Кастинг многомерного массива сглаживает его до одномерного массива. После этого нам остается только перейти к нужному элементу (4-й элемент в двумерном массиве разрешается как Skip(9)...) и взять из него 3 элемента).
Возможно, вы захотите использовать зубчатый массив. Это не массив 10 на 3, а массив массивов.
Примерно так:
double[][] rectArray;
....
double [] rowArray = rectArray[3];
Есть много мест, где можно узнать больше о зубчатых массивах. Например Динамически создаваемый прямоугольный массив с зазубринами
Если вы должны использовать прямоугольный массив и просто хотите упростить синтаксис, вы можете использовать метод для получения строки так:
double[] fourthRow = GetRow(rectArray, 3);
public static T[] GetRow<T>(T[,] matrix, int row)
{
var columns = matrix.GetLength(1);
var array = new T[columns];
for (int i = 0; i < columns; ++i)
array[i] = matrix[row, i];
return array;
}