如何在不四舍五入的情况下显示数字

发布于 2024-07-21 08:59:29 字数 166 浏览 6 评论 0原文

我有这个数字:1234.5678(作为文本)

我需要这个数字为双精度,点后只有 2 个数字

,但没有对 1234.5678 中的数字进行四舍五入

- 我在 12.899999 中得到 1234.57

- 我得到 12.90

我该怎么做?

I have this number: 1234.5678 (as a text)

I need this number as double, with only 2 numbers after the dot

But without Round the number

in 1234.5678 - i get 1234.57

in 12.899999 - i get 12.90

How I can do it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

爱她像谁 2024-07-28 08:59:29

你应该能够像这样得到你想要的东西:

number.ToString("#0.00")

You should be able to get what you want like this:

number.ToString("#0.00")
躲猫猫 2024-07-28 08:59:29

乘以100,取该数字的floor(),再除以100。

Multiply by 100, take floor() of the number, divide by 100 again.

小瓶盖 2024-07-28 08:59:29

您没有发布您想要的结果,但我假设您想要截断,以便您看到 1234.56 和 12.89。 尝试:

decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);

You didn't post the results you wanted, but I assume you want truncation, so that you'll see 1234.56, and 12.89. Try:

decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);
我的影子我的梦 2024-07-28 08:59:29

这是因为您无法将这些数字精确地表示为双精度数,因此转换、舍入然后重新打印为文本会导致精度损失。

请改用“十进制”。

This is because you can't represent these numbers exactly as doubles, so converting, rounding, and then reprinting as text results in a loss of precision.

Use 'decimal' instead.

摇划花蜜的午后 2024-07-28 08:59:29

这应该可以解决问题。

string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;

This should do the trick.

string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;
忆悲凉 2024-07-28 08:59:29

就拿这个浮点算术来说吧!

var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
  ans = num.Substring(0, num.IndexOf('.') + 3);
}

Take this floating point arithmetic!

var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
  ans = num.Substring(0, num.IndexOf('.') + 3);
}
烛影斜 2024-07-28 08:59:29

这不行吗?

        double d = 1234.5678;
        double rounded =Math.Round(d, 2);

This doesn't work?

        double d = 1234.5678;
        double rounded =Math.Round(d, 2);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文