C#将int转换为带小数位的货币字符串

Jef*_*eff 5 c# int currency decimal

转换.Blah ......对我来说可能是最令人困惑的语言方面.

无论如何,我想将int 999转换为9.99美元.使用ToString("C")给我$ 999.00这不是我想要的.

我的所有整数都会以这种方式工作,这意味着如果某物的价格是12.30,那么int值将是1230.总是两位小数.我知道这对大多数人来说都很容易,我在这里或通过Google找不到任何东西.

此外,您对转换所拥有的任何资源都将不胜感激!

Moe*_*sko 16

如果您的源变量声明为int,那么一种可能的解决方案是除以"100m"而不是"100".否则它将执行整数除法.例如:

    int originalValue = 80;
    string yourValue = (originalValue / 100m).ToString("C2");
Run Code Online (Sandbox Code Playgroud)

这会将yourValue设置为"$ 0.80".如果省略"m",则将其设置为"$ 0.00".

注意:"m"告诉编译器将100视为小数,并且作为除法的一部分,将对originalValue进行隐式转换.


Jas*_*own 5

只差100:

yourValue = (originalValue / 100).ToString("C");<br>
// C will ensure two decimal places... <br>
// you can also specificy en-US or whatever for you currency format
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解货币格式详情

更新:

我今天一定很慢......你还必须转换为双倍,否则你将丢失小数位:

yourValue = ((double)originalValue / 100).ToString("C");
Run Code Online (Sandbox Code Playgroud)

(或者,您可以使用小数,因为它通常是货币的首选类型).