C#, Преобразовывающие 20 точности цифры, удваиваются до строки и назад снова

После того, как вы перейдете к одному из этих методов, чтобы переименовать ваш пакет, вы можете начать видеть ошибки.

Если / если ваш R.java не создается правильно, вы получите много ошибок в вашем проекте, говоря error: cannot find symbol class R, а также error: package R does not exist.

Не забудьте проверить свой манифест приложения xml. Имя пакета манифеста должно совпадать с фактическим именем пакета. Кажется, что R.java генерируется из манифеста приложения и может вызывать эти ошибки, если есть несоответствие.

Не забудьте проверить соответствие атрибутов package в вашем <manifest package="com.yourcompany.coolapp">

28
задан Joel Coehoorn 4 March 2009 в 17:10
поделиться

2 ответа

Используйте строку числового формата "R" :

double d = 0.00034101243963859839;
string s = d.ToString("R");
//...
double d2 = double.Parse(s);
if(d == d2)
{
  //-- Success
}

Эти R обозначает "распространение в прямом и обратном направлениях". Из связанного документа:

Этот формат поддерживается только для Единственных и Двойных типов. Спецификатор туда и обратно гарантирует, что числовое значение, преобразованное в строку, будет проанализировано назад в то же числовое значение.

Как в стороне, я подозреваю, что нет никакого способа сохранить те последние две цифры. Существует только такая доступная точность, и я сомневаюсь, что они когда-либо превращают ее в d во-первых. Но можно удостовериться, что строка, по крайней мере, читает назад, что Вы действительно имеете правильно.

при реальной необходимости в дополнительной точности Вы могли бы попытаться использовать decimal вместо этого.

49
ответ дан Joel Coehoorn 14 October 2019 в 11:02
поделиться

Нет. Помимо того факта, что double является двоичным и, следовательно, не подходит для десятичных значений, double имеет максимум 15/16 десятичных цифр (53 бита). десятичное число имеет максимум 28/29 цифр (96 бит), поэтому было бы хорошо использовать его. Если у вас более высокая точность в базе данных, вам нужен собственный класс bignum для C #, ищите реализации в stackoverflow.

1
ответ дан Thorsten S. 14 October 2019 в 11:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: