有没有一种简单的方法来交换格式化数字的符号?
Posted
技术标签:
【中文标题】有没有一种简单的方法来交换格式化数字的符号?【英文标题】:Is there an easy way to swap the sign of a formatted number? 【发布时间】:2016-07-08 13:18:14 【问题描述】:我完全接受这可能是不可能的,但似乎值得提出一个问题,看看是否有人有一个简单的答案。
我有一个用户定义格式为 Cn 或 Fn 的字段。用户还希望能够选择性地交换值上的符号(例如,-123.4 将显示为 £123.40)。有没有使用标准格式的简单方法?我找不到任何东西表明这是可能的,我必须生成某种形式的用户定义字符串来代替它们(这是可能的,但由于各种原因有问题)。
原因是出于会计目的,其中数据的存储方式与最容易解释的方式相反。我们无法更改原始数据,并且在格式化之前更改 hte 数据也不简单。
【问题讨论】:
您想从正面换成负面,反之亦然,还是总是正面? 格式化数字是什么意思? 负对正和正对负。我的意思是使用格式定义显示数字。 为什么不能使用decimal swappedVal = -1*val;
?什么是格式化数字?
因为如果可能的话,我想使用一种格式来做到这一点。它是一个网格显示,用户需要能够即时更改它。我无法轻松访问原始数据。
我仍然不明白用户如何更改它以及为什么不能这样做。
【参考方案1】:
用户点击一列(有点)并说交换符号。那时 点,我无权访问数据,因为它已经 在网格中格式化
你不能用这种方法吗?
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
if(cell.Value == null) return;
// say this is for example: £123.40
var ukCulture = new System.Globalization.CultureInfo("en-GB");
decimal value;
if (decimal.TryParse(cell.Value.ToString(), NumberStyles.Any, ukCulture, out value))
cell.Value = (-1*value).ToString("C", ukCulture);
每次用户点击此单元格时,值的符号都会交换。
【讨论】:
以上是关于有没有一种简单的方法来交换格式化数字的符号?的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种简单的方法来更改 Django 表单的日期时间输入字段的格式?