在C#中,我有一个双变量价格,价值10215.24.我想在一些数字后用逗号显示价格.我的预期产量是10,215.24
我第一次使用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
假设我们有以下简单代码
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.
我的控制器看起来像这样:
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#的新手,现在遇到数学问题.为什么我不能像这样简单地划分或划分"简单":
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.
我现在有这段代码:
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.我究竟做错了什么?
我想知道为什么我们正在使用的书的例子是使用小数和双打的混合,必要时使用强制转换为十进制.仅仅制作小数并且完全避免演员表是不是更简单?
这是我很好奇的主要代码块.
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)
我忽略了任何性能或准确性问题吗?
我正在将值序列化为XML文档.当我序列化时double,我想确保我没有失去任何精确度,并且文化不会干扰.或任何其他我没有想到的"陷阱".
同样地DateTime,我ToBinary()用来获得一个非常安全的序列化值.
那么,double在C#中序列化/反序列化值的最佳方法是什么?
我试图获得每个重复行的总和的不同行
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# .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,非常感谢!