我想将一个数字缩短为非0的第一个有效数字.后面的数字应该是四舍五入的.
例子:
0.001 -> 0.001
0.00367 -> 0.004
0.00337 -> 0.003
0.000000564 -> 0.0000006
0.00000432907543029 -> 0.000004
Run Code Online (Sandbox Code Playgroud)
目前我有以下程序:
if (value < (decimal) 0.01)
{
value = Math.Round(value, 4);
}
Run Code Online (Sandbox Code Playgroud)
注意:
从上面的示例中可以看出,舍入到4个小数位可能不够,值可能会有很大差异.
我创建了一个 .Net 6 类库,现在我正在尝试创建一个测试项目。
.net 6 测试项目不可用。在网上我找到了使用.Net Framework或.Net core的信息来进行测试。
我创建了一个 .Net Framework 4.8 测试项目并引用了我的类库。
我收到编译器错误:
项目“..\CircularList\CircularList.csproj”目标为“net6.0”。它无法被面向“.NETFramework,Version=v4.8”的项目引用。单元测试
那么我该如何进行单元测试呢?有没有办法从 .Net Framework 4.8 转向 .Net 6.0?
我正在尝试管理ComboBox的颜色。虽然可以更改背景颜色,但找不到边框轮廓的属性。
由于箭头的缘故,在黑暗的主题中仅画一个正方形作为边框是行不通的。这使我得出以下结论:该边框可能是实际的图像文件。
是否可以替换呢?
更新: 我已经实现了@AhmedAbdelhameed的解决方案-现在看起来好多了。但是对于平面样式,我必须像下面那样调整矩形:
using (var p = new Pen(this.BorderColor, 1))
{
g.DrawRectangle(p, 0, 0, Width - buttonWidth - 1, Height - 1);
}
Run Code Online (Sandbox Code Playgroud)
我还交换了“ BorderColor”以匹配我的其他UI:
public CustomComboBox()
{
BorderColor = Color.Gray;
}
Run Code Online (Sandbox Code Playgroud)
我现在想做的是仅在深色主题中更改实际的下拉按钮(也许带有叠加png)
更新: 我已经能够使用以下代码向自定义控件添加pricturebox:
using (var g = Graphics.FromHwnd(Handle))
{
using (var p = new Pen(this.BorderColor, 1))
{
g.DrawRectangle(p, 0, 0, Width - buttonWidth - 1, Height - 1);
}
if (Properties.Settings.Default.Theme == "Dark")
{
g.DrawImageUnscaled(Properties.Resources.dropdown, new Point(Width - buttonWidth - 1));
}
} …
Run Code Online (Sandbox Code Playgroud) 我正在构建非常小的 15 分钟应用程序,它可以帮助我和我的同事进行简单的日常业务工作。
为此,我经常使用 WinForm,因为它只制作一个带有 2 个文本框和一个提交按钮的窗口就太快了。
不幸的是,最近我想我按下了一个按钮,图形编辑器将不再打开。我将始终处于文本编辑器视图中。
在网上我找不到关于如何打开这个该死的设计师的任何信息。我希望你们中有人知道答案。
给出以下代码:
double sin = Math.Sin(59.0);
double sin2 = Math.Sin(31.0);
Run Code Online (Sandbox Code Playgroud)
第一个结果是 0.64.. 第二个结果是 -0.4..
如果我在计算器中输入相同的数字:
sin(59) = 0.86..
sin(31) = 0.51..
我做错了什么?
给出以下代码:
string example = "1234";
long parsed_example = long.Parse(example);
Console.Writeline(parsed_example);
# => 1234
Run Code Online (Sandbox Code Playgroud)
效果很好。
以下示例则不然:
string example = "";
long parsed_example = long.Parse(example);
# [System.FormatException: Input string was not in a correct format.]
Run Code Online (Sandbox Code Playgroud)
然而目标是:
string example = "";
if (example == "")
{
example = "0";
}
long parsed_example = long.Parse(example);
Console.Writeline(parsed_example);
# => 0
Run Code Online (Sandbox Code Playgroud)
有没有更短、更合适的解决方案?上面的代码几乎可以证明一个小函数是合理的,我最好有一个内联解决方案。也许是这样的(伪代码):
string example = "";
long parsed_example = example ?? 0, long.Parse(example);
Run Code Online (Sandbox Code Playgroud) 我相信每个人都知道在csharp中带有'或'的if子句:
bool bananaIsYellow = true;
bool bananaIsBrown = false;
if (bananaIsYellow || bananaIsBrown) bool bananaIsRipe = true;
Run Code Online (Sandbox Code Playgroud)
事情是,一旦你开始比较字符串,这会变得非常混乱:
string bananaColor = yellow;
if (bananaColor == "yellow" ||
bananaColor == "brown" ||
bananaColor == "blue")
{
bool bananaIsRipe = true;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法缩短这个?
我知道的唯一方法就是这样(显然不是更漂亮或更短):
string bananacolor = "yellow";
if (StringComparer(bananacolor, new string[] { "yellow", "brown", "blue" })) { bool bananaIsRipe = true; }
}
private static bool StringComparer(string source, string[] values)
{
foreach (var value in values)
{
if (source == value) …
Run Code Online (Sandbox Code Playgroud) 我想创建一个字符串模式,这需要我编写 2 行代码:
string linePattern = "|";
for (int i = 0; i < columns; i++) linePattern += "{" + i + ",-" + sizes[i] + "}|";
Run Code Online (Sandbox Code Playgroud)
现在将其写在一行中以更容易地查看字符串是由什么组成的,这被认为是好还是坏做法:
string linePattern = "|"; for (int i=0; i<columns; i++) linePattern += "{"+i+",-"+sizes[i]+ "}|";
Run Code Online (Sandbox Code Playgroud)
最终字符串例如:
"|{0,-4}|{1,-2}|{2,-7}|{3,-3}|{4,-8}|";
Run Code Online (Sandbox Code Playgroud)
编辑:
这个问题的原因是,在我看来,在两个单独的行中进行变量声明和赋值是非常丑陋的。是否有另一种方法来编写这个字符串被认为是好的做法?(请注意,此模式可能需要根据列的数量进行扩展)
string linePattern = /* string generator here */;
echo("linePattern = |{0,-4}|{1,-2}|{2,-7}|{3,-3}|{4,-8}| ");
Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×3
math ×2
winforms ×2
.net-4.8 ×1
android ×1
combobox ×1
decimal ×1
if-statement ×1
long-integer ×1
overlay ×1
parsing ×1
rounding ×1
s ×1
trigonometry ×1
unit-testing ×1
xamarin ×1