使用程式語言函式庫提供的 `Round()` 之類的函式對數值做四捨五入時,要小心它的捨入結果可能不是所預期的四捨五入,因而踩到雷。
來看看 Python 的:來看看 JavaScript 的:
最後看看 C# 的:
可以發現,對 1.5 跟 3.5 都是四捨五入到 2 與 4,可是在 Python 與 C# 中,對 2.5 的結果卻是 2。
來看看 JavaScript 的:
最後看看 C# 的:
可以發現,對 1.5 跟 3.5 都是四捨五入到 2 與 4,可是在 Python 與 C# 中,對 2.5 的結果卻是 2。
class Character : MonoBehaviour
{
protected CharacterData data;
...
}
class CharacterData : ScriptableObject
{
public float movingVelocity = 10.0f;
public float rotatingVelocity = 10.0f;
}
class Player : Character
{
public new PlayerData data;
private void Start()
{
base.data = data;
}
...
}
[CreateAssetMenu(fileName = "PlayerData",
menuName = "Scriptable Object/PlayerData", order = 1)]
class PlayerData : CharacterData
{
public float firingPeriod = 0.1f;
}
Unity 在編譯後會出現錯誤訊息,"The same field name is serialized multiple times in the class or its parent class. This is not supported: Base(Player) data":
>>> id(1)
10914496
>>> x = 1
>>> id(x)
10914496