相关疑难解决方法(0)

C#:格式化价格值字符串

在C#中,我有一个双变量价格,价值10215.24.我想在一些数字后用逗号显示价格.我的预期产量是10,215.24

c# string-formatting

10
推荐指数
4
解决办法
3万
查看次数

FluentNHibernate映射; 无法使用比例/精度映射双精度或小数

我第一次使用FluentNHibernate,尝试将类映射到SQL Express数据库.通常它可以工作,但我无法将Double或Decimal属性类型映射到特定的比例/精度.下面显示了我使用SchemaUpdate.Execute反复测试的单个属性的结果.在任何情况下我都无法让它发挥作用.

听到一些不符合我预期的映射的解释(2-8)真的很有帮助吗?

// Ok mappings:
Run Code Online (Sandbox Code Playgroud)

1)十进制:映射(函数(x)x.Balance)>>十进制(19,5 )

// Mappings "errors":
Run Code Online (Sandbox Code Playgroud)

2)Double:Map(Function(x)x.Balance).CustomSqlType("decimal") >> Decimal(18,0) - 为什么0 precision是这里的默认映射?

3)Double:Map(Function(x)x.Balance)>> Float,但是; 在运行SchemaValidator之后: HibernateException:FnhDb.dbo.Account中的列类型错误,用于列Balance.发现:浮动,预期双精度

4)十进制:映射(函数(x)x.Balance).Scale(9).精度(2) >> SqlException:列'Balance'的标度(9)必须在0到2的范围内.

5,6)十进制或双数:映射(函数(x)x.Balance).Scale(9).精度(2).CustomSqlType("numeric") >> numeric(18,0)

7,8)十进制或双精度:映射(函数(x)x.Balance).Scale(9).精度(2).CustomSqlType("decimal") >>十进制(18,0)


编辑: 我在这里包含代码和案例(4)的hbm.xml(导出):

Public Class AccountMap
    Inherits ClassMap(Of Account)

    Public Sub New()
        MyBase.New()

        Id(Function(x) x.Id).GeneratedBy.Identity()
        Map(Function(x) x.Balance).Scale(9).Precision(2)   
        Map(Function(x) x.Deposits)
        Map(Function(x) x.WithDrawals)
    End Sub
End Class

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" …
Run Code Online (Sandbox Code Playgroud)

.net database nhibernate nhibernate-mapping fluent-nhibernate

9
推荐指数
1
解决办法
7000
查看次数

C#Convert.ToDouble()在将字符串转换为double时丢失小数点

假设我们有以下简单代码

        string number = "93389.429999999993";
        double numberAsDouble = Convert.ToDouble(number);
        Console.WriteLine(numberAsDouble);
Run Code Online (Sandbox Code Playgroud)

之后,转换numberAsDouble变量的值为93389.43.我该怎么做才能使这个变量保持完整的数字而不是四舍五入呢?我发现它的Convert.ToDecimal行为方式不同,但我需要将值设为double.

-------------------小更新---------------------

在上面代码的第2行中放置一个断点,表明numberAsDouble变量在控制台中显示之前具有舍入值93389.43.

c# double

8
推荐指数
2
解决办法
1万
查看次数

ASP.NET MVC3双重验证(逗号,点,null)

我的控制器看起来像这样:

 public class PortefeuilleController : Controller
    {
            public ActionResult Create()
            {
                return View(new PortefeuilleViewModel{Saldo = 0.0});
            }
    }
Run Code Online (Sandbox Code Playgroud)

我的创建视图如下所示:

@model PortefeuilleViewModel

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>PortefeuilleViewModel</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Naam)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Naam)
            @Html.ValidationMessageFor(model => model.Naam)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Saldo)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Saldo)
            @Html.ValidationMessageFor(model => model.Saldo)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}
Run Code Online (Sandbox Code Playgroud)

我的PortefeuilleViewModel看起来像这样:

public class …
Run Code Online (Sandbox Code Playgroud)

c# validation asp.net-mvc

5
推荐指数
1
解决办法
1万
查看次数

乘法和小数除法

我是C#的新手,现在遇到数学问题.为什么我不能像这样简单地划分或划分"简单":

 decimal mLon1 = 0;
 decimal mLat1 = 0;
 decimal mFactor = 111021;
 decimal mRadius = 100;
 decimal mLat = 12.123;

 mLon1 = mLon - mRadius / Math.Abs(Math.Cos(((Math.PI / 180) * mLat)) * mFaktor);
 mLat1 = mLat - (mRadius / mFaktor);
Run Code Online (Sandbox Code Playgroud)

编译器显示错误:

运算符'*'不能应用于'double'和'decimal'类型的操作数.

与运营商'/'相同......

如何让我的代码工作?任何暗示的Thx.

c#

5
推荐指数
1
解决办法
3489
查看次数

C#Double不受Math.Round的影响 - 为什么?

我现在有这段代码:

 totalCost = fuelPrice * purchaseVolume;
 totalCost = Math.Round(totalCost, 2);
 Console.WriteLine("Total Cost = £" + totalCost);
Run Code Online (Sandbox Code Playgroud)

如果燃油价格为1.15且成交量为2,console.writeline则表示总成本为2.3英镑,而不是我想要达到的2.30.我究竟做错了什么?

c#

3
推荐指数
1
解决办法
889
查看次数

想知道为什么我们使用的书是使用双精度和小数而不是小数

我想知道为什么我们正在使用的书的例子是使用小数和双打的混合,必要时使用强制转换为十进制.仅仅制作小数并且完全避免演员表是不是更简单?

这是我很好奇的主要代码块.

decimal amount;
decimal principal = 1000;
double rate = 0.05;

for (int year = 1; year <= 10; year++)
{
    amount = principal * ((decimal) Math.Pow(1.0 + rate, year));
}
Run Code Online (Sandbox Code Playgroud)

我忽略了任何性能或准确性问题吗?

c#

3
推荐指数
1
解决办法
94
查看次数

序列化双精度的最佳方法

我正在将值序列化为XML文档.当我序列化时double,我想确保我没有失去任何精确度,并且文化不会干扰.或任何其他我没有想到的"陷阱".

同样地DateTime,我ToBinary()用来获得一个非常安全的序列化值.

那么,double在C#中序列化/反序列化值的最佳方法是什么?

c# serialization

3
推荐指数
1
解决办法
4279
查看次数

LINQ DataTable选择不同的行

我试图获得每个重复行的总和的不同行

DataTable newItems = new DataTable();

newItems.Columns.Add("Qty");
newItems.Columns.Add("BarcodeNumber");
newItems.Columns.Add("DisplayName");
newItems.Columns.Add("UnitPrice");
newItems.Columns.Add("TotalPrice");

newItems.Rows.Add(1, "URT29384", "Wallet", 88.8, 88.8);
newItems.Rows.Add(1, "URT29233", "Mouse", 4.44, 4.44);
newItems.Rows.Add(1, "URT29756", "Flash Drive", 1.47, 1.47);
newItems.Rows.Add(1, "URT29323", "Spoon", 99.95, 99.95);
newItems.Rows.Add(1, "URT29384", "Wallet", 88.8, 88.8);
newItems.Rows.Add(1, "URT29384", "Wallet", 88.8, 88.8);
Run Code Online (Sandbox Code Playgroud)

我希望结果如此

 3 URT29384  Wallet       266.4     266.4
 1 URT29233  Mouse          4.44      4.44
 1 URT29756  Flash Drive    1.47      1.47
 1 URT29323  Spoon         99.95     99.95
Run Code Online (Sandbox Code Playgroud)

这可能使用LINQ吗?这里有点帮助.. TYIA

c# linq

3
推荐指数
1
解决办法
2万
查看次数

编译器错误消息:CS0029:无法将类型“int”隐式转换为“string”

我需要将表数据库输入的字符串转换为 C# .NET 4 中的整数值,并尝试了受此链接启发的代码:

    int i;
    string Entry_Level = Convert.ToInt32("2,45");
    i = Convert.ToInt32(Entry_Level); 
Run Code Online (Sandbox Code Playgroud)

但我有这个错误:

编译器错误消息:CS0029:无法将类型“int”隐式转换为“string”

编辑

解决方法:

    decimal i;
    string Entry_Level = "2,45";
    i = Convert.ToDecimal(Entry_Level);

    Response.Write(i.ToString());
    Response.End();
Run Code Online (Sandbox Code Playgroud)

输出结果是 2,45,非常感谢!

c#

3
推荐指数
1
解决办法
12万
查看次数