Ich versuche, Zahlen in Text zu konvertieren, und dieser Code gibt mir einen Fehler bei einer der Variablen.Konvertieren von Zahlen mit Dezimalstellen in Text
Nur am Ende der dritten Variable gibt es mir einen "; erwartet" -Fehler.
Was passiert im Code?
public static string NumberToWords(double doubleNumber)
{
var beforeFloatingPoint = (int)Math.Floor(doubleNumber);
var beforeFloatingPointWord = "{NumberToWords(beforeFloatingPoint)} Rupees";
var afterFloatingPointWord = "{SmallNumberToWord((int) ((doubleNumber - beforeFloatingPoint) * 100),"")} cents";
return "{beforeFloatingPointWord} and {afterFloatingPointWord}";
}
der Fehler ist genau am Ende der unteren Zeile.
var afterFloatingPointWord = "{SmallNumberToWord((int) ((doubleNumber - beforeFloatingPoint) * 100),"")} cents";
vollständiger Code ist unten und jetzt, wenn ich den Code ausführen bekomme ich eine Fehlermeldung, dass Eingabezeichenfolge war nicht in einem korrekten Format (auf der Schaltfläche Click-Ereignisse). Es funktioniert ohne Dezimalstellen. aber mit dezimalen gibt es mir diesen Fehler. Ich poste den vollständigen Code unten.
Wenn jemand mir helfen kann, das funktioniert bitte.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CheckPrintingSystem
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static string NumberToWords(double doubleNumber)
{
var beforeFloatingPoint = (int)Math.Floor(doubleNumber);
var beforeFloatingPointWord = string.Format("NumberToWords(beforeFloatingPoint)} Rupees");
var afterFloatingPointWord = string.Format(@"{SmallNumberToWord((int) ((doubleNumber - beforeFloatingPoint) * 100),"")} cents");
return "{beforeFloatingPointWord} and {afterFloatingPointWord}";
}
private static string NumberToWords(int number)
{
if (number == 0) return "zero";
if (number < 0) return "minus" + NumberToWords(Math.Abs(number));
string words = "";
if((number/1000000) > 0)
{
words += NumberToWords(number/1000000) + "million ";
number %= 1000000;
}
if((number/1000) > 0)
{
words += NumberToWords(number/1000) + "thousand ";
number %= 1000;
}
if ((number/100) > 0)
{
words += NumberToWords(number/100) + "hundred ";
number %= 100;
}
words = SmallNumberToWord(number,words);
return words;
}
private static string SmallNumberToWord(int number, string words)
{
if (number <= 0) return words;
if (words != "") words += "and ";
var unitsMap = new[] { "zero ", "one ", "two ", "three ", "four ", "five ", "six ", "seven ", "eight ", "nine ", "ten ", "eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen "};
var tensMap = new[] { "zero ", "ten ", "twenty ", "thirty ", "fourty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety " };
if (number < 20) words += unitsMap[number];
else
{
words += tensMap[number/10];
if ((number % 10) > 0) words += " " + unitsMap[number % 10];
}
return words;
}
private void button1_Click(object sender, EventArgs e)
{
textBox2.Text = NumberToWords(Convert.ToInt32(textBox1.Text));
}
}
}
Um ein doppeltes Anführungszeichen in einem normalen Zeichenfolge einfügen einen umgekehrten Schrägstrich verwenden. '\" '(Nicht ein weiteres doppeltes Anführungszeichen) Literalzeichenfolgen (' @ "..." ') sind unterschiedlich – Richard
Möchten Sie die Zeichenfolgeninterpolation verwenden? Verwenden Sie die $" "Syntax. Beachten Sie auch, wie Sie doppelte Anführungszeichen in doppelte Anführungszeichen setzen - Sie müssen den inneren Anführungszeichen entgehen. – orhtej2
Guys Ich habe string.Format und Fehler ging weg.aber ich habe einen neuen Fehler, wenn ich den Code ausführen.Ich habe den vollständigen Code oben.Helfen Sie mir, es sortiert zu bekommen. @ Orhtej2 kann $ Syntax nicht verwenden, die es mir gibt unerwarteter Zeichenfehler –