Там какой-либо встроенный путь состоит в том, чтобы преобразовать целое число в строку (основы) в C#?

Я думаю, что это проблема Java. Если вы отлаживаете свою программу, ваш Double будет всегда отображаться с научной точки зрения, поэтому мы хотим, чтобы он был в String. Это может быть достигнуто на Java несколькими способами, и вы можете найти его здесь:

Как печатать двойное значение без научной нотации с использованием Java?

Что касается вашего конкретного вопроса о Jackson, я написал для вас код:

public class ObjectMapperTest {

    public static void main(String[] args) throws JsonProcessingException {

        IntegerSchema schema = new IntegerSchema();
        schema.type = "Int";
        schema.max = 10200000000d;
        schema.min = 100d;

        ObjectMapper m = new ObjectMapper();

        System.out.println(m.writeValueAsString(schema));

    }

    public static class IntegerSchema {

        @JsonProperty
        String type;
        @JsonProperty
        double min;
        @JsonProperty
        @JsonSerialize(using=MyDoubleDesirializer.class)
        double max;
    }

    public static class MyDoubleDesirializer extends JsonSerializer {


        @Override
        public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
                throws IOException, JsonProcessingException {
            // TODO Auto-generated method stub

            BigDecimal d = new BigDecimal(value);
            gen.writeNumber(d.toPlainString());
        }

    }

}

Трюк заключается в регистрации пользовательского Serializer для вашего двойного значения. Таким образом, вы можете контролировать то, что хотите.

Я использую значение BigDecimal для создания строкового представления вашего Double. Затем выход будет (для конкретного примера):

{"type":"Int","min":100.0,"max":10200000000}

Надеюсь, что это решает вашу проблему.

Artur

6
задан Jedidja 18 September 2008 в 18:09
поделиться

6 ответов

Вероятно, для устранения кого-то вводящего 7 вместо 8 так как использование для произвольных оснований - немногие (Но не не существующее).

Вот метод в качестве примера, который может сделать произвольные основные преобразования. Можно использовать его, если Вам нравится, никакие ограничения.

string ConvertToBase(int value, int toBase)
{
     if (toBase < 2 || toBase > 36) throw new ArgumentException("toBase");
     if (value < 0) throw new ArgumentException("value");

     if (value == 0) return "0"; //0 would skip while loop

     string AlphaCodes = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

     string retVal = "";

     while (value > 0)
     {
          retVal = AlphaCodes[value % toBase] + retVal;
          value /= toBase;
     }

     return retVal;
}

Непротестированный, но необходимо смочь изобразить его из здесь.

5
ответ дан 17 December 2019 в 18:21
поделиться

Вы могли дать http://www.codeproject.com/KB/macros/Convert.aspx попытку.

1
ответ дан 17 December 2019 в 18:21
поделиться

Вы могли попробовать следующее:

http://www.dotnetspider.com/resources/938-Conversion-Decimal-number-any-Base-vice.aspx

Это, по крайней мере, производит впечатление, что у Вас могла быть любая основа (от 2-> 16). Хотя я немного смущен относительно того, почему Вы хотели бы!

0
ответ дан 17 December 2019 в 18:21
поделиться
//untested  -- public domain
// if you do a lot of conversions, using StringBuilder will be 
// much, much more efficient with memory and time than using string
// alone.

string toStringWithBase(int number, int base)
    { 
    if(0==number) //handle corner case
        return "0";
    if(base < 2)
        return "ERROR:  Base less than 2";

    StringBuilder buffer = new StringBuilder(); 

    bool negative = (number < 0) ? true : false;
    if(negative)
        {
        number=-number;
        buffer.Append('-');
        }

    int digits=0;
    int factor=1;

    int runningTotal=number;
    while(number > 0)
       {
       number = number/base;
       digits++;
       factor*=base;
       }
    factor = factor/base;

    while(factor >= 1)
       {
       int remainder = (number/factor) % base;

       Char out = '0'+remainder;
       if(remainder > 9)
           out = 'A' + remainder - 10;
       buffer.Append(out);
       factor = factor/base;
       }

    return buffer.ToString
    }
0
ответ дан 17 December 2019 в 18:21
поделиться
string foo = Convert.ToString(myint,base);

http://msdn.microsoft.com/en-us/library/14kwkz77.aspx

Править: Мое плохое, это выдаст исключение аргумента, если Вы не передадите в указанных основаниях (2, 8, 10, и 16)

Ваш, вероятно, СОЛЬ, если Вы хотите использовать другую основу (но почему???).

-3
ответ дан 17 December 2019 в 18:21
поделиться

Извините, я не отвечаю на ваш вопрос, но ... Выбор баз не произвольный. Ваш компьютер постоянно преобразует базу 2 (внутренняя двоичная система) в удобочитаемую базу 10. Базы 8 и 16 очень легко преобразовать в и из базы 2 и часто используются, чтобы компьютер И человек мог прочитать значение ( например, GUID)

0
ответ дан 17 December 2019 в 18:21
поделиться
Другие вопросы по тегам:

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