ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2024ǯ02·î20Æü(²Ð) 12:10:19ÍúÎò
¡¡Mathf.Floor ¥á¥½¥Ã¥É¤ä Math.Trancate ¥á¥½¥Ã¥É¤Ï¡¢½èÍý¤Î»ÆºÙ¤Ï°Û¤Ê¤ê¤Þ¤¹¤¬¡¢´ðËÜŪ¤Ë¤Ï¾®¿ôÅÀ¤ÏÀÚ¤ê¼Î¤Æ¤«¡¢´Ý¤áÌܽèÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á·×»»ÍѤΥ᥽¥Ã¥É¤ò¼«ºî¤µ¤ì¤Æ¤¤¤ëÊý¤â¿¤¤¤È»×¤¤¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤Ï¡¢ÀÚ¤ê¼Î¤Æ·×»»ÍѤΥ桼¥Æ¥£¥ê¥Æ¥£¥¯¥é¥¹¤È·×»»¥á¥½¥Ã¥É¤ÎºîÀ®Îã¤òÄ󼨤¤¤¿¤·¤Þ¤¹¡£
¡¡ÀÚ¤ê¼Î¤Æ¤ò¤·¤¿¤¤¾®¿ôÅÀ¤Î·å¿ô¤ò»ØÄꤷ¤Æ·×»»¤Ç¤¤ëÅÀ¤¬¥Ý¥¤¥ó¥È¤Ë¤Ê¤ê¤Þ¤¹¡£
using UnityEngine;
public static class CalcHelper
{
/// <summary>
/// ¾®¿ôÅÀ¤ò»ØÄꤷ¤¿·å¿ô¤ËÀÚ¤ê¼Î¤Æ¤ë
/// </summary>
/// <param name="value"></param>
/// <param name="digitsNum"></param>
/// <returns></returns>
public static float FloorToDigits(float value, int digitsNum) {
// Pow ¥á¥½¥Ã¥É¤ò»È¤¤¡¢10 ¤Î digitsNum Îß¾è¤ò¹Ô¤Ã¤Æ¡¢»ØÄꤵ¤ì¤¿·å¿ô¤Þ¤Ç¤ÎÀ°¿ô¤ËÊÑ´¹
// Î㤨¤Ð¡¢value = 3.141592 ¤Ç digitsNum = 2 ¤Î¾ì¹ç
// floorValue = 3.141592 * 100(10¤Î2¾è) = 314.1592 ¤È¤Ê¤ë
float floorValue = value * Mathf.Pow(10, digitsNum);
// ¾®¿ôÅÀ°Ê²¼¤òÀÚ¤ê¼Î¤Æ¤ë
// Î㤨¤Ð¡¢floorValue = 314.1592 ¤Î¾ì¹ç¡¢floorValue = 314 ¤È¤Ê¤ë
floorValue = Mathf.Floor(floorValue);
// Pow ¥á¥½¥Ã¥É¤ò»È¤¤¡¢10 ¤Î digitsNum Îß¾è¤ò¹Ô¤Ã¤Æ¡¢»ØÄꤵ¤ì¤¿·å¿ô¤Þ¤Ç¤Î¾®¿ôÅÀ°Ê²¼¤ò»ý¤ÄÃͤËÌ᤹
// Î㤨¤Ð¡¢digitsNum = 2 ¤Î¾ì¹ç¡¢floorValue = 314 / 100(10¤Î2¾è) = 3.14 ¤È¤Ê¤ë
floorValue /= Mathf.Pow(10, digitsNum);
// ¾åµ3¹Ô¤ò1¹Ô¤Ç½ñ¤¤¤¿¾ì¹ç
//float floorValue = Mathf.Floor(value * Mathf.Pow(10, digitsNum)) / Mathf.Pow(10, digitsNum);
return floorValue;
}
}
¡¡Â裱°ú¿ô¤Ë¤Ï·×»»¤·¤¿¤¤ float ·¿¤ÎÃͤò»ØÄꤷ¤Þ¤¹¡£Â裲°ú¿ô¤Ë¤ÏÀÚ¤ê¼Î¤Æ¤·¤Æ»Ä¤·¤¿¤¤¾®¿ôÅÀ¤Î·å¿ô¤ò»ØÄꤷ¤Þ¤¹¡£(ÀÚ¤ê¼Î¤Æ¤¹¤ë·å¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)
Î㤨¤Ð¡¢digitsNum ¤ÎÃͤ¬ 2 ¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¾®¿ôÅÀÂè3°Ì¤òÀÚ¤ê¼Î¤Æ¤·¤Æ¡¢Âè2°Ì¤Þ¤Ç¤ò»ý¤ÄÃͤËÊÑ´¹¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡CalcHelper ¥¯¥é¥¹¤Ï¡¢»ØÄꤷ¤¿·å¿ô¤ËÀÚ¤ê¼Î¤Æ¤ë¥á¥½¥Ã¥É¤òÄ󶡤·¤Þ¤¹¡£
¤³¤Á¤é¤Ï´Êñ¤Ê»ÈÍÑÎã¤Ç¤¹¡£°Ê²¼¤ÎÎã¤Ç¤Ï¡¢¾®¿ôÅÀ¤ÎÂè3°Ì¤Þ¤Ç¤ò»Ä¤¹¤è¤¦¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£
¡ã¤½¤Î£±¡ä
float x = 0.5522f; int digitsNum = 3; x = CalcHelper.FloorToDigits(x, digitsNum); Debug.Log(x);
¡ãConsole ¥Ó¥å¡¼¡ä
0.552
¡ã¤½¤Î£²¡ä
float x = 0.42f;
float y = 0.45f
int digitsNum = 1;
if(CalcHelper.FloorToDigits(x, digitsNum) >= 0.5f){
Debug.Log("x");
}
if(CalcHelper.FloorToDigits(y, digitsNum) >= 0.5f){
Debug.Log("y");
}
¡ãConsole ¥Ó¥å¡¼¡ä
x y
¡¡¤³¤ÎÎã¤Ç¤Ï¡¢¾®¿ôÅÀ¤ÎÂè2°Ì¤òÀÚ¤ê¼Î¤Æ¡¢Âè1°Ì¤Þ¤Ç¤ÎÃͤòÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢x = 0.4f¡¢ y = 0.4f ¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢Console ¥Ó¥å¡¼¤Ë¤Ï x ¤È y ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°




¥³¥á¥ó¥È¤ò¤«¤¯