提问人:Danny Goodsell 提问时间:10/26/2023 最后编辑:halferDanny Goodsell 更新时间:11/7/2023 访问量:71
转换浮点数时出现问题
Problems Converting Floats
问:
我是 Unity 和 C# 的新手。我正在制作一个点击游戏,你可以为了钱而写书。为了计算每本书应该值多少美元,我有一个名为“金钱计算”的脚本,我计算一本具有一定创造力和页数的书应该值多少钱,然后我将页数和书的创造力作为变量发送到我的另一个脚本“金钱展示”。在货币计算中运行简单的数学函数后,我得到了一个整数,这就是我想要的。
这是一个脚本,它生成美元金额,并调用下面的另一个脚本的方法,以获取数字并显示它。这位是“金钱计算”:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Money Calculations : MonoBehaviour
{
public static int cashAmount;
public static float pages;
public static float creativity;
public void displayMoney()
{
//money formula
pages = Mathf.RoundToInt(CriticsP.numOfPages);
creativity = Mathf.RoundToInt(CriticsC.creativity);
// -Critics C and P are other scripts
// -pages and creativity start as float values
cashAmount = (int)(pages / 3) + (int)(creativity * 4);
//cashAmount is dollar value to be sent to Money Display
MoneyDisplay.add();
}
}
在这里,我有显示脚本,“Money Display”
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MoneyDisplay : MonoBehaviour
{
public static int cashOnHand;
public Text cashMoney;
void Update()
{
cashMoney.text = cashOnHand.ToString();
}
public static void add()
{
// **
cashOnHand += (int)MoneyCalculations.cashAmount;
}
}
我遇到的问题是我有星号的地方。页面和创造力的原始数字是浮点数,我无法将它们作为整数进行计算。所以我想我可以在显示最终数字 cashOnHand(一个 int)之前将它们转换为 int。尽管我已经多次说过让 C# 将页面和创造力转换为 int,但我认为我一定做错了。当我说游戏显示的数字是一个整数时,与上一个脚本生成的数字完全相同。但出于某种原因,当我告诉计算机(强调星号)时,它会打印一个百搭数字,比如 7880,而不是我需要的 325。我怀疑它正在恢复到它的基本浮点值并从我正在寻找的整数中变化,我不知道为什么当我专门执行 += 函数时数字会返回浮点数,而且我没有办法修复它。cashOnHand = (int)MoneyCalculations.cashAmount
cashOnHand * += * (int)MoneyCalculations.cashAmount
为了得到我的编号,我尝试过多次从 float 到 int 的转换,但我无法在整个开发过程中将页码和创造力保持为 int,并且由于缺乏专业知识而不得不使用浮点数。恐怕现在可能为时已晚,因为浮点数在代码中的几个地方根深蒂固,我担心简单的转换可能还不够,但我不知道。如果我的情况没有希望,您能否向我推荐有关在整数上执行数学函数而不必将它们作为浮点数的资源?
答: 暂无答案
评论
displayMoney
Update
static