427 {
428 int num = -1;
430 {
431 case 'C':
432 case 'c':
433 num = ((nMaxDigits >= 0) ? nMaxDigits :
info.CurrencyDecimalDigits);
434 if (nMaxDigits < 0)
435 {
436 nMaxDigits =
info.CurrencyDecimalDigits;
437 }
438 RoundNumber(ref number, number.scale + nMaxDigits);
440 break;
441 case 'F':
442 case 'f':
443 if (nMaxDigits < 0)
444 {
445 nMaxDigits = (num =
info.NumberDecimalDigits);
446 }
447 else
448 {
449 num = nMaxDigits;
450 }
451 RoundNumber(ref number, number.scale + nMaxDigits);
452 if (number.sign)
453 {
454 sb.Append(
info.NegativeSign);
455 }
456 FormatFixed(ref sb, ref number, num, nMaxDigits,
info,
null,
info.NumberDecimalSeparator,
null);
457 break;
458 case 'N':
459 case 'n':
460 if (nMaxDigits < 0)
461 {
462 nMaxDigits = (num =
info.NumberDecimalDigits);
463 }
464 else
465 {
466 num = nMaxDigits;
467 }
468 RoundNumber(ref number, number.scale + nMaxDigits);
470 break;
471 case 'E':
472 case 'e':
473 if (nMaxDigits < 0)
474 {
475 nMaxDigits = (num = 6);
476 }
477 else
478 {
479 num = nMaxDigits;
480 }
481 nMaxDigits++;
483 if (number.sign)
484 {
485 sb.Append(
info.NegativeSign);
486 }
488 break;
489 case 'G':
490 case 'g':
491 {
492 bool flag = true;
493 if (nMaxDigits < 1)
494 {
495 if (isDecimal && nMaxDigits == -1)
496 {
497 nMaxDigits = (num = 29);
498 flag = false;
499 }
500 else
501 {
502 nMaxDigits = (num = number.precision);
503 }
504 }
505 else
506 {
507 num = nMaxDigits;
508 }
509 if (flag)
510 {
512 }
513 else if (isDecimal && *number.digits == '\0')
514 {
515 number.sign = false;
516 }
517 if (number.sign)
518 {
519 sb.Append(
info.NegativeSign);
520 }
522 break;
523 }
524 case 'P':
525 case 'p':
526 if (nMaxDigits < 0)
527 {
528 nMaxDigits = (num =
info.PercentDecimalDigits);
529 }
530 else
531 {
532 num = nMaxDigits;
533 }
534 number.scale += 2;
535 RoundNumber(ref number, number.scale + nMaxDigits);
537 break;
538 default:
540 }
541 }
static string Argument_BadFormatSpecifier