为一组给定的数字有效生成排列组合的代码 C#
任何人都可以写信或给我一个链接,我可以在其中找到C#代码以最有效的方式列出一组数字的所有排列? 解决方案 不确定这些有多效率,但这里有一些选择: 其他解决方案 有点太晚...作为参考... 根据我的测试,我的实施 Heap's AlgorithM '看到(对2种假设非常快的算法进行了测试). 优点: HEAP的算法(每个排列的单次交换) 没有乘法(就像网络上看到的某些实现一样) 交换交换 通用 没有不安全的代码 到位(非常低的内存使用) 无模型(仅首先比较) 我的实现 heap algorithm : using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; namespace WpfPermutations { //
2 2024-04-26
编程技术问答社区
为整个应用程序(线程)设置文化不变性 点'.'而不是','。
我有此应用程序,该应用程序要求用户引入一些价格等.与DataGridView一起使用以显示.问题在于,在某些计算机上'.'这被视为','我设法将某些文本框保留事件转到并为其设置了不变的文化,但是当我使用datagridviews显示显示,并且我也有一个reportsviewer,我也有一个将数字转换为文本的代码,并且有了这个问题,我的应用程序在当前状态毫无价值,因此我需要将所有内容设置为不变的文化,无论其价值如何: 2.00 AS 200,00在那台计算机上,我想使用不变文化,无论是什么只显示2.00与'.'一起使用','>. . 解决方案 我不建议强制对文化不变或特定文化的应用.但这就是您想要的...检查问题. 如果您只想更改datagridview,则更改DefaultCellStyle.FormatProvider以使用您所在国家的文化.在下面的示例中,我更改了使用英语文化的FormatProvider. Column.DefaultCellStyle.Fo
8 2024-04-26
编程技术问答社区
用小数(货币)转换为单词
我想用小数(以货币)为单词将数字转换为Word ex.:12345.60 - >十二千三百四十五美元和六十美分 我从中获得了此代码 public static string NumberToWords(int number) { if (number == 0) return "zero"; if (number 0) { words += NumberToWords(number / 1000000000) + " billion "; number %= 1000000000; } if ((number / 1000000) > 0) { words += NumberToWords(number / 1000000) + " million "; number %=
6 2024-04-25
编程技术问答社区
有什么好的方法来存储极其庞大的数字?(例如:572e6561)在C#中
我的第一个想法是实施将系数存储为双重的类,而10^x作为int/short. 我想对科学符号使用工程符号,因为它对于最终用户来说更简单. 如果有这样做的项目,我似乎找不到它们. 我知道System.Numerics.BigInteger存在,但是很慢.我真的想要高速在移动设备上执行许多计算. 我只想将数字存储为工程符号. 有什么想法? 解决方案 如果您不需要太多的精度,只是大幅度,那么我会说使用两个值代表Mantissa和Exponent.将两者使用整数都更接近于内部处理浮点数的处理方式.但是,至少使用浮力用于曼蒂萨(Mantissa)可能会使实施许多操作变得更容易,以几个曼蒂萨(Mantissa)精度为代价. c具有 frexp 和 ldexp 分别处理曼蒂萨(Mantissa)和浮点数号的指数.我不知道任何C#或.NET,但也许在那里也可以使用类似的功能. 如果您也为指数使用了双重,那么从理论上讲,您确实会 大数字.但是,如果该指数不是准确
4 2024-04-24
编程技术问答社区
C# 是否有一个内置函数可以将格式化的字符串转换为数字?
如何将一个格式的数字转换为数字? Decimal percent = 55.76; String strPercent = String.Format("{0:0.0}%", percent); Decimal dollars = 33.5; String strDollars = String.Format("{0:C}", dollars); 稍后说,我想获得百分比和美元价值作为数字.是否有使用C#和ASP.NET进行此操作的内置方法?我知道如何使用正则函数和字符串函数,但是我从是否有内置功能可以执行此操作?如果是,我该如何使用? 解决方案 使用Decimal.Parse,您可以传递System.Globalization.NumberStyles来控制字符串解析的方式. 这将使您可以轻松地将货币字符串转换回小数. 不幸的是,NumberStyles不支持百分比,因此您仍然必须单独剥离百分比符号. Decimal percent
8 2024-04-23
编程技术问答社区
按键事件中小数点后的限制数字
我正在使用以下代码来从用户中获取数字,并且仅获取一个小数点,这对我来说在键盘事件上效果很好: if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.') { e.Handled = true; } if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1) { e.Handled = true; } 现在,我想限制十进制/点之后的数字/数字,即35.25468,意味着它仅在点/小数点之后仅需6个数字/数字. 更新我! 解决方案 private void price_tb_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char
12 2024-04-23
编程技术问答社区
随机数发生器-变量长度
当前我的程序(请参见下文)生成从8-1个字符的随机字符串(由数字制成). public static string GenerateNewCode(int CodeLength) { string newCode = String.Empty; int seed = unchecked(DateTime.Now.Ticks.GetHashCode()); Random random = new Random(seed); // keep going until we find a unique code ` do { newCode = random.Next(Convert.ToInt32(Math.Pow(10, CodeLength - 1)), Convert.ToInt32(Math.Pow(10, CodeLength) - 1)).ToString("0000"); } wh
10 2024-04-23
编程技术问答社区
汇编式十六进制数字的C#重排法
我是Regex的新手,我想以组装方式突出显示十六进制的数字.这样: $ 00 $ ff $ 1234 ($ 00) ($ 00,x) 甚至以#. 开头的十六进制数字 到目前为止,我写了" $ [a-fa-f0-9]+",看看它是否突出显示了以$开头的数字,但事实并非如此.为什么?有人可以帮助我做我的工作吗?谢谢. 解决方案 在$之前放下后斜杠,您的正则施以像So 一样工作 \$[A-Fa-f0-9]+ $是与字符串末端匹配的有效正则义务字符.因此,如果您的图案包含美元,则需要逃脱它.请参阅 REGEX参考有关详细信息 其他解决方案 这应该涵盖所有这些情况,包括您获得#而不是$ 的情况 public Regex MyRegex = new Regex( "^(\\()?[\\$#][0-9a-fA-F]+(,x)?(?(1)\\))[\\s]*$", RegexOptions.Singleline
16 2024-04-23
编程技术问答社区
在C#中,当按下一个按钮时,有一个数字的持续减少
我是一个居民,所以让我轻松. 当我按下按钮时,我想按照其名称(0-20)的顺序显示图像集合.我设法以一个随机数(0-20)进行操作,但是如果我想减少20至19至18,等等,我该怎么做? public partial class Form1 : Form { //Random r = new Random(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string path = @"C:\Users\Ole-Jeger\Documents\Visual Studio 2013\Projects\Test_Spill1\Test_Spill1\Pictures\"; //Heathbar.Image = Image.FromFi
2 2024-04-21
编程技术问答社区
如何避免为.NET中的不同数字类型编写重复的代码
我正在尝试编写一个通用vector2类型,该类型将供浮动,双重等.类型并使用算术操作.是否有机会在C#,F#,Nemerle或其他任何或多或少成熟的.NET语言中进行此操作? 我需要 的解决方案 (1)良好的表现(与我单独编写相同 vector2float,vector2double等类), (2)将允许 看起来不错的代码(我不想在 运行时) (3),哪些将尽可能多地进行编译时间检查. 出于1和3的原因,我不想使用动力学.现在我正在检查F#和Nemerle. upd:我希望为此类型有很多数学代码.但是,如果可能的话,我更希望将代码放入扩展方法中. upd2:'etc'类型包括int(我怀疑我会使用的)和十进制(我认为我可以使用,但现在不使用).使用扩展方法只是一个品味问题 - 如果有充分的理由不这样做,请告诉. 解决方案 如Daniel所述,F#具有一个称为静态分辨类型参数的功能,它超出了您在C#中使用的常规.net ent generic可以做的
8 2024-04-21
编程技术问答社区
有没有一种简单的方法可以将一个数字转换为带有百万和亿的印度文字格式?
标题建议,我想用c#将长数转换为格式.文化环境似乎没有这样做,我目前正在这样做 String.Format(new CultureInfo("en-IN"), "{0:C0}", Price) 但是,对于很长的数字,我更喜欢单词格式.我不是来自印度,只对系统的工作原理有模糊的熟悉. 解决方案 虽然我无法给您代码本身,但这是系统 1-一个 10-十 1000-千 10000-一万 100000-十万 1000000-十亿 10000000-卢比 100000000 -10千万 1000000000-阿拉伯 10000000000-十个阿拉伯人 100000000000 -Kharab 1000000000000 -TEN KHARAB 100000000000-1 Neel 100000000000000-10 Neel 1000000000000000-1 PADM 我写了我制作的会计套件的例程,所以写这并不是特别困难.
6 2024-04-21
编程技术问答社区
从大的浮点数中删除E符号,C#?
如果您使用了大型浮点数,则在C#大浮标号中发现了这样的显示: 2000000 * 2000000 = 4E+12 如何显示 4e+12 为4,000,000,000不 4e+12 ? 解决方案 您想要 number.ToString("N0"); " N0"是没有小数位的数字. 替代方案 - " f0"是固定点,没有十进制位置,但没有逗号分隔符的打印: double number = 4e12; Console.WriteLine(number.ToString("F0")); Console.WriteLine(number.ToString("N0")); 打印: 4000000000000 4,000,000,000,000 source 其他解决方案 真的很棒的答案! 我的代码是 Double dblAcct = (Double)childRow["Account No"]; s_acct = dblAcct
2 2024-04-20
编程技术问答社区
C#数字基类
我想编写一个可以接受任何数字的C#方法.类似: public static T Sum(T a, T b) where T : number { // (not real code) return a + b; } ,但我看不到C#中的"数字"基类,因为我使用的大多数其他语言中都存在.数值类型是可观的,可观的,可显着的,可观的,可观的,但似乎没有任何算术功能.它们都是结构,除了物体外,没有明显的常见超类. (如果我在这里搞砸了含义,请原谅我,因为我对C#structs不太熟悉,并且完全是他们喜欢或与课堂不同的所有方式.) 我是否缺少某些内容,或者不可能在C#中编写" A + B"的方法,而不会确切声明A和B在" +"? 的上下文中是什么 解决方案 您必须诉诸使用过载.有点像Math类一样,就像Math.Max那样支持所有数字类型. link CD提出的链接也很足智多谋. 其他解决方案 参见这样的问题进行类似的讨论. 另外,如果您愿意为您
8 2024-04-19
编程技术问答社区
将数字转换为文字
即使此问题已经发布和回答.我想帮助我的代码.任务是将一个数字从0到1000万.我试图使用GUI代码来做到这一点,问题是它根本没有返回答案.任何人都可以帮助我确定代码上的问题. 代码下面: private void btnConvertToText_Click(object sender, EventArgs e) { string ConvertedNumber = " "; int number = Convert.ToInt32(txtNumber.Text); int Count = 0; string [] ones = {" One ", " Two ", " Three ", " Four ", " Five ", " Six ", " Seven ", " Eight ", " Nine "}; string [] teens= {" Eleven ", "
10 2024-04-19
编程技术问答社区
什么是能够匹配任何小数位数的非零浮点数的最短的词条?
最短的正则是可以将非零浮点数与任何数量的小数位匹配的最短正则是什么? 它应该接受 之类的数字 -1 -5.9652 -7.00002 -0.8 -0.0500 -0.58000 0.01 0.000005 0.9900 5 7.5 7.005 但拒绝 等结构 . .02 -. -.996 0 -0 0. -0. -0.000 0.00 -- .. + +0 +1 +. +1.26 ,etc 我不需要使用E,E等来支持科学符号. 顺便说一句,我正在使用的语言是c#. 解决方案 ^-?(0\.\d*[1-9]|[1-9]\d*(\.\d+)?)$ 编辑更新以反映新要求(最后一个小数可能为零) ^-?(0\.\d*[1-9]\d*|[1-9]\d*(\.\d+)?)$ (比使用LookAhead:^-?(0\.(?=[1-9])\d*|[1-9]\d*(\.\d+)?)$.) edit2 如果例如001.000可以通过 ^-?(?=.*
8 2024-04-19
编程技术问答社区
如何生成唯一的订单号?
我正在寻找一种生成唯一订单ID的好方法.您能看到以下代码有任何问题吗? int customerId = 10000000; long ticks = DateTime.UtcNow.Ticks; long orderId = customerId + ticks; int orderNumber = orderId.GetHashCode(); 我将在创建订单之前检查数据库中的数字是否在数据库中是唯一的. 解决方案 如果您将记录存储在数据库中,则应该真正查看那里可用的功能以生成独特的替代密钥.在SQLServer中,这将是 如果有令人信服的原因,为什么您不能使用数据库生成唯一键,则应查看 Guid - 它的概率远高于日期时间操纵以生成唯一值. GUID可以琐碎地转换为字符串,因此在这种情况下,您的标识符将是一个字符串. 您正在用哈希所做的不是一个好主意 - 没有什么可以独特的,在许多情况下,它们确实确实发生了碰撞. GUIDS-不要在机器上提供100%的独
6 2024-04-18
编程技术问答社区
如何使用C#对数值进行排序?
i有一个字符串,其中包含按周期分开的数字.当我排序时,它是这样的,因为它是一个字符串:(ascii char订单) 3.9.5.2.1.1 3.9.5.2.1.10 3.9.5.2.1.11 3.9.5.2.1.12 3.9.5.2.1.2 3.9.5.2.1.3 3.9.5.2.1.4 等. 我希望它像这样:(按数字顺序) 3.9.5.2.1.1 3.9.5.2.1.2 3.9.5.2.1.3 ... 3.9.5.2.1.9 3.9.5.2.1.10 3.9.5.2.1.11 3.9.5.2.1.12 我知道我可以: 使用拆分函数获取单个数字 将值放入对象 对对象进行排序 ,如果重复现有功能,我更喜欢避免所有这些工作. .NET框架中的一种方法是否已经可以了? 解决方案 这是我的工作解决方案,还可以照顾不正确格式的字符串(例如包含文本). 这个想法是在两个字符串中获得第一个数字并比较这些数字.如果它们匹配,请继续下一个数字.如果他
8 2024-04-18
编程技术问答社区
如何在RichTextBox中显示一行的编号?
我正在制作一个简单的文本和脚本编辑器,并突出显示代码.为此,我使用了RichTextbox.但是我不知道如何使其在左侧显示线的数字,例如在VS或Notepad ++中.有解决方案吗? 解决方案 我尝试从其他地方引用的编码器文章中重新使用代码,但是我看过的每一个选项似乎都太过了. 因此,我构建了另一个显示行号的RichTextBoxEx. 可以打开或关闭行编号.它很快.它滚动干净.您可以选择数字的颜色,梯度的背景颜色,边框厚度,字体,是否使用领先的零.您可以选择"如显示"的数字行,也可以根据RTB中的硬新线选择. 示例: 它有局限性:它仅显示左侧的数字.如果您关心的话,您可以不用太多的努力来改变这一点. 该代码设计为C#项目.尽管它是较大的"解决方案"(XPath可视化工具)的一部分,但自定义RichTextbox被包装为可分开的组件,并准备在新项目中使用.在Visual Studio中,只需向DLL添加引用,就可以将其拖放到设计表面上.您可以从较大的
12 2024-04-18
编程技术问答社区
如何在c#中检查一个整数是否包括某个数字
是否有一种方法可以检查整数是否在C#? 中包含一定数量 例如: 我想检查7.当我输入17时,代码将返回1.当我输入28时,代码将返回0. 谢谢 解决方案 int number = 17; int digit = 7; bool result = number.ToString().Contains(digit.ToString()); 其他解决方案 我们可以通过使用while循环找到它而不将数字转换为字符串. 不建议这样.但这将帮助一些新的人 进行编码. 假设您的号码为"数字","数字"是您要检查的一定数字,在"数字"中包含,在这种情况下,数字为7,数字为17, public bool includesInteger(int number, int digit) { while(number > 0) { if (number % 10 == digit) return true; number /= 1
10 2024-04-17
编程技术问答社区
从字符串中提取所有数字
假设我有一个字符串,例如123ad456.我想制作一种将数字组分为列表的方法,因此输出将是123,456. 我尝试使用return Regex.Match(str, @"-?\d+").Value;,但这仅输出数字的第一次出现,因此输出为123.我也知道我可以使用Regex.Matches,但是从我的理解中,这会输出123456,而不会分开不同的数字组. 我还从 MSDN上的此页面,Regex.Match的过载需要string来找到匹配和int作为搜索比赛的索引,但我不喜欢't除了要搜索的正则搜索参数外,还要看到上述超负荷,而Regex.Matches. 也是如此. 我想使用的方法是使用某种for循环,但是我不确定该怎么做.帮助您将不胜感激. 解决方案 您必须使用Matches而不是Match.然后简单地迭代所有匹配: string result = ""; foreach (Match match in Regex.Matches(str, @"-?\d+
6 2024-04-17
编程技术问答社区